@ssv/ngx.ux 2.0.1-dev198 → 2.0.2-dev.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/esm2020/config.mjs +7 -0
- package/esm2020/index.mjs +5 -0
- package/esm2020/internal/internal.model.mjs +2 -0
- package/esm2020/module.mjs +65 -0
- package/esm2020/platform/window.mjs +30 -0
- package/esm2020/ssv-ngx.ux.mjs +5 -0
- package/esm2020/version.mjs +2 -0
- package/esm2020/viewport/index.mjs +9 -0
- package/esm2020/viewport/viewport-data/index.mjs +4 -0
- package/esm2020/viewport/viewport-data/viewport-data-matcher.mjs +108 -0
- package/esm2020/viewport/viewport-data/viewport-data.pipe.mjs +43 -0
- package/esm2020/viewport/viewport-data/viewport-data.service.mjs +37 -0
- package/esm2020/viewport/viewport-data/viewport-data.utils.mjs +100 -0
- package/esm2020/viewport/viewport-matcher-var.directive.mjs +63 -0
- package/esm2020/viewport/viewport-matcher.directive.mjs +131 -0
- package/esm2020/viewport/viewport-server-size.service.mjs +43 -0
- package/esm2020/viewport/viewport.const.mjs +18 -0
- package/esm2020/viewport/viewport.model.mjs +31 -0
- package/esm2020/viewport/viewport.service.mjs +66 -0
- package/esm2020/viewport/viewport.util.mjs +117 -0
- package/fesm2015/{ssv-ngx.ux.js → ssv-ngx.ux.mjs} +254 -233
- package/fesm2015/ssv-ngx.ux.mjs.map +1 -0
- package/fesm2020/ssv-ngx.ux.mjs +822 -0
- package/fesm2020/ssv-ngx.ux.mjs.map +1 -0
- package/module.d.ts +7 -0
- package/package.json +21 -9
- package/platform/window.d.ts +3 -0
- package/version.d.ts +1 -1
- package/viewport/viewport-data/viewport-data.pipe.d.ts +3 -0
- package/viewport/viewport-data/viewport-data.service.d.ts +3 -0
- package/viewport/viewport-matcher-var.directive.d.ts +3 -0
- package/viewport/viewport-matcher.directive.d.ts +3 -0
- package/viewport/viewport-server-size.service.d.ts +3 -0
- package/viewport/viewport.service.d.ts +3 -0
- package/CHANGELOG.md +0 -142
- package/bundles/ssv-ngx.ux.umd.js +0 -1219
- package/bundles/ssv-ngx.ux.umd.js.map +0 -1
- package/bundles/ssv-ngx.ux.umd.min.js +0 -16
- package/bundles/ssv-ngx.ux.umd.min.js.map +0 -1
- package/esm2015/config.js +0 -7
- package/esm2015/index.js +0 -5
- package/esm2015/internal/internal.model.js +0 -2
- package/esm2015/module.js +0 -50
- package/esm2015/platform/window.js +0 -28
- package/esm2015/ssv-ngx.ux.js +0 -7
- package/esm2015/version.js +0 -2
- package/esm2015/viewport/index.js +0 -9
- package/esm2015/viewport/viewport-data/index.js +0 -4
- package/esm2015/viewport/viewport-data/viewport-data-matcher.js +0 -108
- package/esm2015/viewport/viewport-data/viewport-data.pipe.js +0 -43
- package/esm2015/viewport/viewport-data/viewport-data.service.js +0 -38
- package/esm2015/viewport/viewport-data/viewport-data.utils.js +0 -100
- package/esm2015/viewport/viewport-matcher-var.directive.js +0 -64
- package/esm2015/viewport/viewport-matcher.directive.js +0 -134
- package/esm2015/viewport/viewport-server-size.service.js +0 -38
- package/esm2015/viewport/viewport.const.js +0 -18
- package/esm2015/viewport/viewport.model.js +0 -31
- package/esm2015/viewport/viewport.service.js +0 -69
- package/esm2015/viewport/viewport.util.js +0 -117
- package/fesm2015/ssv-ngx.ux.js.map +0 -1
- package/ssv-ngx.ux.d.ts +0 -6
- package/ssv-ngx.ux.metadata.json +0 -1
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ViewportDataMatchStrategy } from "./viewport-data/viewport-data-matcher";
|
|
2
|
-
/** Default viewport breakpoints. */
|
|
3
|
-
export const UX_VIEWPORT_DEFAULT_BREAKPOINTS = {
|
|
4
|
-
xsmall: 450,
|
|
5
|
-
small: 767,
|
|
6
|
-
medium: 992,
|
|
7
|
-
large: 1280,
|
|
8
|
-
fhd: 1920,
|
|
9
|
-
qhd: 2560,
|
|
10
|
-
uhd4k: 3840,
|
|
11
|
-
uhd8k: 7680,
|
|
12
|
-
};
|
|
13
|
-
export const UX_VIEWPORT_DEFAULT_CONFIG = {
|
|
14
|
-
resizePollingSpeed: 33,
|
|
15
|
-
breakpoints: UX_VIEWPORT_DEFAULT_BREAKPOINTS,
|
|
16
|
-
defaultDataMatchStrategy: ViewportDataMatchStrategy.smaller,
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuY29uc3QuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJ2aWV3cG9ydC92aWV3cG9ydC5jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUdsRixvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQXVCO0lBQ2xFLE1BQU0sRUFBRSxHQUFHO0lBQ1gsS0FBSyxFQUFFLEdBQUc7SUFDVixNQUFNLEVBQUUsR0FBRztJQUNYLEtBQUssRUFBRSxJQUFJO0lBQ1gsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEtBQUssRUFBRSxJQUFJO0lBQ1gsS0FBSyxFQUFFLElBQUk7Q0FDWCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXNCO0lBQzVELGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsV0FBVyxFQUFFLCtCQUErQjtJQUM1Qyx3QkFBd0IsRUFBRSx5QkFBeUIsQ0FBQyxPQUFPO0NBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uL2ludGVybmFsL2ludGVybmFsLm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5IH0gZnJvbSBcIi4vdmlld3BvcnQtZGF0YS92aWV3cG9ydC1kYXRhLW1hdGNoZXJcIjtcbmltcG9ydCB7IFV4Vmlld3BvcnRPcHRpb25zIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcblxuLyoqIERlZmF1bHQgdmlld3BvcnQgYnJlYWtwb2ludHMuICovXG5leHBvcnQgY29uc3QgVVhfVklFV1BPUlRfREVGQVVMVF9CUkVBS1BPSU5UUzogRGljdGlvbmFyeTxudW1iZXI+ID0ge1xuXHR4c21hbGw6IDQ1MCxcblx0c21hbGw6IDc2Nyxcblx0bWVkaXVtOiA5OTIsXG5cdGxhcmdlOiAxMjgwLFxuXHRmaGQ6IDE5MjAsXG5cdHFoZDogMjU2MCxcblx0dWhkNGs6IDM4NDAsXG5cdHVoZDhrOiA3NjgwLFxufTtcblxuZXhwb3J0IGNvbnN0IFVYX1ZJRVdQT1JUX0RFRkFVTFRfQ09ORklHOiBVeFZpZXdwb3J0T3B0aW9ucyA9IHtcblx0cmVzaXplUG9sbGluZ1NwZWVkOiAzMyxcblx0YnJlYWtwb2ludHM6IFVYX1ZJRVdQT1JUX0RFRkFVTFRfQlJFQUtQT0lOVFMsXG5cdGRlZmF1bHREYXRhTWF0Y2hTdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5zbWFsbGVyLFxufTtcbiJdfQ==
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The indices of each breakpoint provided based on the `UX_VIEWPORT_DEFAULT_BREAKPOINTS`.
|
|
3
|
-
* @see UX_VIEWPORT_DEFAULT_BREAKPOINTS
|
|
4
|
-
*/
|
|
5
|
-
export var ViewportSizeType;
|
|
6
|
-
(function (ViewportSizeType) {
|
|
7
|
-
ViewportSizeType[ViewportSizeType["xsmall"] = 0] = "xsmall";
|
|
8
|
-
ViewportSizeType[ViewportSizeType["small"] = 1] = "small";
|
|
9
|
-
ViewportSizeType[ViewportSizeType["medium"] = 2] = "medium";
|
|
10
|
-
ViewportSizeType[ViewportSizeType["large"] = 3] = "large";
|
|
11
|
-
ViewportSizeType[ViewportSizeType["fhd"] = 4] = "fhd";
|
|
12
|
-
ViewportSizeType[ViewportSizeType["qhd"] = 6] = "qhd";
|
|
13
|
-
ViewportSizeType[ViewportSizeType["uhd4k"] = 7] = "uhd4k";
|
|
14
|
-
ViewportSizeType[ViewportSizeType["uhd8k"] = 8] = "uhd8k";
|
|
15
|
-
})(ViewportSizeType || (ViewportSizeType = {}));
|
|
16
|
-
export var ComparisonOperation;
|
|
17
|
-
(function (ComparisonOperation) {
|
|
18
|
-
ComparisonOperation["equals"] = "=";
|
|
19
|
-
ComparisonOperation["notEquals"] = "<>";
|
|
20
|
-
ComparisonOperation["lessThan"] = "<";
|
|
21
|
-
ComparisonOperation["lessOrEqualThan"] = "<=";
|
|
22
|
-
ComparisonOperation["greaterThan"] = ">";
|
|
23
|
-
ComparisonOperation["greaterOrEqualThan"] = ">=";
|
|
24
|
-
})(ComparisonOperation || (ComparisonOperation = {}));
|
|
25
|
-
export var DeviceType;
|
|
26
|
-
(function (DeviceType) {
|
|
27
|
-
DeviceType["desktop"] = "desktop";
|
|
28
|
-
DeviceType["mobile"] = "mobile";
|
|
29
|
-
DeviceType["tablet"] = "tablet";
|
|
30
|
-
})(DeviceType || (DeviceType = {}));
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJ2aWV3cG9ydC92aWV3cG9ydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxnQkFTWDtBQVRELFdBQVksZ0JBQWdCO0lBQzNCLDJEQUFVLENBQUE7SUFDVix5REFBUyxDQUFBO0lBQ1QsMkRBQVUsQ0FBQTtJQUNWLHlEQUFTLENBQUE7SUFDVCxxREFBTyxDQUFBO0lBQ1AscURBQU8sQ0FBQTtJQUNQLHlEQUFTLENBQUE7SUFDVCx5REFBUyxDQUFBO0FBQ1YsQ0FBQyxFQVRXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFTM0I7QUFFRCxNQUFNLENBQU4sSUFBWSxtQkFPWDtBQVBELFdBQVksbUJBQW1CO0lBQzlCLG1DQUFZLENBQUE7SUFDWix1Q0FBZ0IsQ0FBQTtJQUNoQixxQ0FBYyxDQUFBO0lBQ2QsNkNBQXNCLENBQUE7SUFDdEIsd0NBQWlCLENBQUE7SUFDakIsZ0RBQXlCLENBQUE7QUFDMUIsQ0FBQyxFQVBXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFPOUI7QUFFRCxNQUFNLENBQU4sSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3JCLGlDQUFtQixDQUFBO0lBQ25CLCtCQUFpQixDQUFBO0lBQ2pCLCtCQUFpQixDQUFBO0FBQ2xCLENBQUMsRUFKVyxVQUFVLEtBQVYsVUFBVSxRQUlyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tIFwiLi4vaW50ZXJuYWwvaW50ZXJuYWwubW9kZWxcIjtcbmltcG9ydCB7IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhXCI7XG5cbi8qKlxuICogVGhlIGluZGljZXMgb2YgZWFjaCBicmVha3BvaW50IHByb3ZpZGVkIGJhc2VkIG9uIHRoZSBgVVhfVklFV1BPUlRfREVGQVVMVF9CUkVBS1BPSU5UU2AuXG4gKiBAc2VlIFVYX1ZJRVdQT1JUX0RFRkFVTFRfQlJFQUtQT0lOVFNcbiAqL1xuZXhwb3J0IGVudW0gVmlld3BvcnRTaXplVHlwZSB7XG5cdHhzbWFsbCA9IDAsXG5cdHNtYWxsID0gMSxcblx0bWVkaXVtID0gMixcblx0bGFyZ2UgPSAzLFxuXHRmaGQgPSA0LFxuXHRxaGQgPSA2LFxuXHR1aGQ0ayA9IDcsXG5cdHVoZDhrID0gOCxcbn1cblxuZXhwb3J0IGVudW0gQ29tcGFyaXNvbk9wZXJhdGlvbiB7XG5cdGVxdWFscyA9IFwiPVwiLFxuXHRub3RFcXVhbHMgPSBcIjw+XCIsXG5cdGxlc3NUaGFuID0gXCI8XCIsXG5cdGxlc3NPckVxdWFsVGhhbiA9IFwiPD1cIixcblx0Z3JlYXRlclRoYW4gPSBcIj5cIixcblx0Z3JlYXRlck9yRXF1YWxUaGFuID0gXCI+PVwiLFxufVxuXG5leHBvcnQgZW51bSBEZXZpY2VUeXBlIHtcblx0ZGVza3RvcCA9IFwiZGVza3RvcFwiLFxuXHRtb2JpbGUgPSBcIm1vYmlsZVwiLFxuXHR0YWJsZXQgPSBcInRhYmxldFwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXhWaWV3cG9ydE9wdGlvbnMge1xuXHQvKiogUG9sbGluZyBzcGVlZCBvbiByZXNpemluZyAoaW4gbWlsbGlzZWNvbmRzKS4gZS5nLiB0aGUgaGlnaGVyIHRoZSBudW1iZXIgdGhlIGxvbmdlciBpdCB0YWtlcyB0byByZWNhbGN1bGF0ZS4gKi9cblx0cmVzaXplUG9sbGluZ1NwZWVkOiBudW1iZXI7XG5cblx0LyoqIEJyZWFrcG9pbnRzIHRvIHVzZS4gS2V5IG5lZWRzIHRvIG1hdGNoIHRoZSBzaXplIHR5cGUgYW5kIHRoZSB2YWx1ZSB0aGUgd2lkdGggdGhyZXNob2xkLlxuXHQgKiBlLmcuIGdpdmVuIHdpZHRoICcxMDAwJyBhbmQgYG1lZGl1bWAgaXMgc2V0IHRvICc5OTInID0+IGBsYXJnZWAuXG5cdCAqL1xuXHRicmVha3BvaW50czogRGljdGlvbmFyeTxudW1iZXI+O1xuXG5cdC8qKiBEZWZhdWx0IGRhdGEgbWF0Y2ggc3RyYXRlZ3kgdG8gdXNlLiAqL1xuXHRkZWZhdWx0RGF0YU1hdGNoU3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRTaXplIHtcblx0d2lkdGg6IG51bWJlcjtcblx0aGVpZ2h0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRTaXplVHlwZUluZm8ge1xuXHR0eXBlOiBudW1iZXI7XG5cdG5hbWU6IHN0cmluZztcblx0d2lkdGhUaHJlc2hvbGQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydE1hdGNoQ29uZGl0aW9ucyB7XG5cdHNpemVUeXBlPzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsO1xuXHRzaXplVHlwZUV4Y2x1ZGU/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGw7XG5cdGV4cHJlc3Npb24/OiBWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbiB7XG5cdHNpemU6IHN0cmluZztcblx0b3BlcmF0aW9uOiBDb21wYXJpc29uT3BlcmF0aW9uO1xufVxuIl19
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { Injectable, Inject } from "@angular/core";
|
|
2
|
-
import { fromEvent, of } from "rxjs";
|
|
3
|
-
import { map, tap, distinctUntilChanged, startWith, share, shareReplay, auditTime, } from "rxjs/operators";
|
|
4
|
-
import { UX_CONFIG } from "../config";
|
|
5
|
-
import { WindowRef } from "../platform/window";
|
|
6
|
-
import { ViewportServerSizeService } from "./viewport-server-size.service";
|
|
7
|
-
import { generateViewportSizeTypeInfoList, generateViewportSizeTypeInfoRefs, getSizeTypeInfo } from "./viewport.util";
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../platform/window";
|
|
10
|
-
import * as i2 from "./viewport-server-size.service";
|
|
11
|
-
import * as i3 from "../config";
|
|
12
|
-
export class ViewportService {
|
|
13
|
-
constructor(windowRef, viewportServerSize, config) {
|
|
14
|
-
this.windowRef = windowRef;
|
|
15
|
-
this.viewportServerSize = viewportServerSize;
|
|
16
|
-
this._sizeTypes = generateViewportSizeTypeInfoList(config.viewport.breakpoints);
|
|
17
|
-
this._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);
|
|
18
|
-
if (windowRef.hasNative) {
|
|
19
|
-
this.resizeSnap$ = fromEvent(window, "resize").pipe(map(() => this.getViewportSize()), share());
|
|
20
|
-
this.resize$ = this.resizeSnap$.pipe(auditTime(config.viewport.resizePollingSpeed), share());
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
this.resizeSnap$ = this.resize$ = of(viewportServerSize.get());
|
|
24
|
-
}
|
|
25
|
-
const size = this.getViewportSize();
|
|
26
|
-
this._sizeTypeSnapshot = getSizeTypeInfo(size.width, this.sizeTypes);
|
|
27
|
-
const sizeFn = (obs$) => obs$.pipe(startWith(size), distinctUntilChanged((a, b) => a.width === b.width && a.height === b.height), shareReplay(1));
|
|
28
|
-
this.sizeSnap$ = sizeFn(this.resizeSnap$);
|
|
29
|
-
this.size$ = sizeFn(this.resize$);
|
|
30
|
-
const sizeTypeFn = (obs$) => obs$.pipe(distinctUntilChanged((a, b) => a.width === b.width), map(x => getSizeTypeInfo(x.width, this.sizeTypes)), distinctUntilChanged(), tap(x => this._sizeTypeSnapshot = x), shareReplay(1));
|
|
31
|
-
this.sizeType$ = sizeTypeFn(this.size$);
|
|
32
|
-
this.sizeTypeSnap$ = sizeTypeFn(this.sizeSnap$);
|
|
33
|
-
}
|
|
34
|
-
/** Viewport size type snapshot of the last value. (Prefer use `sizeType$` observable when possible.) */
|
|
35
|
-
get sizeTypeSnapshot() { return this._sizeTypeSnapshot; }
|
|
36
|
-
/** Size types refs of the generated viewport size type info. */
|
|
37
|
-
get sizeTypeMap() { return this._sizeTypeMap; }
|
|
38
|
-
/** Viewport size types list ordered by type, smallest to largest. */
|
|
39
|
-
get sizeTypes() { return this._sizeTypes; }
|
|
40
|
-
/** Returns the current viewport size */
|
|
41
|
-
getViewportSize() {
|
|
42
|
-
if (!this.windowRef.hasNative) {
|
|
43
|
-
return this.viewportServerSize.get();
|
|
44
|
-
}
|
|
45
|
-
const ua = navigator.userAgent.toLowerCase();
|
|
46
|
-
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) { // safari subtracts the scrollbar width
|
|
47
|
-
return {
|
|
48
|
-
width: this.windowRef.native.document.documentElement.clientWidth,
|
|
49
|
-
height: this.windowRef.native.document.documentElement.clientHeight,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
width: this.windowRef.native.innerWidth,
|
|
54
|
-
height: this.windowRef.native.innerHeight,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
ViewportService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ViewportService_Factory() { return new ViewportService(i0.ɵɵinject(i1.WindowRef), i0.ɵɵinject(i2.ViewportServerSizeService), i0.ɵɵinject(i3.UX_CONFIG)); }, token: ViewportService, providedIn: "root" });
|
|
59
|
-
ViewportService.decorators = [
|
|
60
|
-
{ type: Injectable, args: [{
|
|
61
|
-
providedIn: "root",
|
|
62
|
-
},] }
|
|
63
|
-
];
|
|
64
|
-
ViewportService.ctorParameters = () => [
|
|
65
|
-
{ type: WindowRef },
|
|
66
|
-
{ type: ViewportServerSizeService },
|
|
67
|
-
{ type: undefined, decorators: [{ type: Inject, args: [UX_CONFIG,] }] }
|
|
68
|
-
];
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9jaXJjbGVjaS9yZXBvL3NyYy8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUNOLEdBQUcsRUFDSCxHQUFHLEVBQ0gsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsR0FDVCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBYSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFNdEgsTUFBTSxPQUFPLGVBQWU7SUFpQzNCLFlBQ1MsU0FBb0IsRUFDcEIsa0JBQTZDLEVBQ2xDLE1BQWlCO1FBRjVCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEyQjtRQUdyRCxJQUFJLENBQUMsVUFBVSxHQUFHLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdEUsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFRLE1BQU0sRUFBRSxRQUFRLENBQUMs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QUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLHVDQUF1QztZQUN4RyxPQUFPO2dCQUNOLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQ2pFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVk7YUFDbkUsQ0FBQztTQUNGO1FBRUQsT0FBTztZQUNOLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQ3ZDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXO1NBQ3pDLENBQUM7SUFDSCxDQUFDOzs7O1lBbkdELFVBQVUsU0FBQztnQkFDWCxVQUFVLEVBQUUsTUFBTTthQUNsQjs7O1lBUFEsU0FBUztZQUNULHlCQUF5Qjs0Q0EyQy9CLE1BQU0sU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcblx0bWFwLFxuXHR0YXAsXG5cdGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuXHRzdGFydFdpdGgsXG5cdHNoYXJlLFxuXHRzaGFyZVJlcGxheSxcblx0YXVkaXRUaW1lLFxufSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgVXhPcHRpb25zLCBVWF9DT05GSUcgfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNpemVUeXBlSW5mbywgVmlld3BvcnRTaXplIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gXCIuLi9wbGF0Zm9ybS93aW5kb3dcIjtcbmltcG9ydCB7IFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC1zZXJ2ZXItc2l6ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvTGlzdCwgZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlSW5mb1JlZnMsIGdldFNpemVUeXBlSW5mbyB9IGZyb20gXCIuL3ZpZXdwb3J0LnV0aWxcIjtcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tIFwiLi4vaW50ZXJuYWwvaW50ZXJuYWwubW9kZWxcIjtcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnRTZXJ2aWNlIHtcblxuXHQvKiogV2luZG93IHJlc2l6ZSBvYnNlcnZhYmxlLiAqL1xuXHRyZWFkb25seSByZXNpemVTbmFwJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+O1xuXG5cdC8qKiBXaW5kb3cgcmVzaXplIG9ic2VydmFibGUgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cblx0cmVhZG9ubHkgcmVzaXplJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+O1xuXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGUgb2JzZXJ2YWJsZSAod2hpY2ggaXMgYWxzbyB0aHJvdHRsZWQpLiAqL1xuXHRyZWFkb25seSBzaXplVHlwZSQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplVHlwZUluZm8+O1xuXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGUgb2JzZXJ2YWJsZS4gKi9cblx0cmVhZG9ubHkgc2l6ZVR5cGVTbmFwJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemVUeXBlSW5mbz47XG5cblx0LyoqIFZpZXdwb3J0IHNpemUgdHlwZSBzbmFwc2hvdCBvZiB0aGUgbGFzdCB2YWx1ZS4gKFByZWZlciB1c2UgYHNpemVUeXBlJGAgb2JzZXJ2YWJsZSB3aGVuIHBvc3NpYmxlLikgKi9cblx0Z2V0IHNpemVUeXBlU25hcHNob3QoKTogVmlld3BvcnRTaXplVHlwZUluZm8geyByZXR1cm4gdGhpcy5fc2l6ZVR5cGVTbmFwc2hvdDsgfVxuXG5cdC8qKiBWaWV3cG9ydCBzaXplIG9ic2VydmFibGUgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cblx0cmVhZG9ubHkgc2l6ZSQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPjtcblxuXHQvKiogVmlld3BvcnQgc2l6ZSBvYnNlcnZhYmxlLiAqL1xuXHRyZWFkb25seSBzaXplU25hcCQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPjtcblxuXHQvKiogU2l6ZSB0eXBlcyByZWZzIG9mIHRoZSBnZW5lcmF0ZWQgdmlld3BvcnQgc2l6ZSB0eXBlIGluZm8uICovXG5cdGdldCBzaXplVHlwZU1hcCgpOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPiB7IHJldHVybiB0aGlzLl9zaXplVHlwZU1hcDsgfVxuXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGVzIGxpc3Qgb3JkZXJlZCBieSB0eXBlLCBzbWFsbGVzdCB0byBsYXJnZXN0LiAqL1xuXHRnZXQgc2l6ZVR5cGVzKCk6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10geyByZXR1cm4gdGhpcy5fc2l6ZVR5cGVzOyB9XG5cblx0cHJpdmF0ZSBfc2l6ZVR5cGVNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+O1xuXHRwcml2YXRlIF9zaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW107XG5cdHByaXZhdGUgX3NpemVUeXBlU25hcHNob3Q6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG5cdFx0cHJpdmF0ZSB2aWV3cG9ydFNlcnZlclNpemU6IFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UsXG5cdFx0QEluamVjdChVWF9DT05GSUcpIGNvbmZpZzogVXhPcHRpb25zLFxuXHQpIHtcblx0XHR0aGlzLl9zaXplVHlwZXMgPSBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvTGlzdChjb25maWcudmlld3BvcnQuYnJlYWtwb2ludHMpO1xuXHRcdHRoaXMuX3NpemVUeXBlTWFwID0gZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlSW5mb1JlZnModGhpcy5fc2l6ZVR5cGVzKTtcblxuXHRcdGlmICh3aW5kb3dSZWYuaGFzTmF0aXZlKSB7XG5cdFx0XHR0aGlzLnJlc2l6ZVNuYXAkID0gZnJvbUV2ZW50PEV2ZW50Pih3aW5kb3csIFwicmVzaXplXCIpLnBpcGUoXG5cdFx0XHRcdG1hcCgoKSA9PiB0aGlzLmdldFZpZXdwb3J0U2l6ZSgpKSxcblx0XHRcdFx0c2hhcmUoKVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5yZXNpemUkID0gdGhpcy5yZXNpemVTbmFwJC5waXBlKFxuXHRcdFx0XHRhdWRpdFRpbWUoY29uZmlnLnZpZXdwb3J0LnJlc2l6ZVBvbGxpbmdTcGVlZCksXG5cdFx0XHRcdHNoYXJlKCksXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlc2l6ZVNuYXAkID0gdGhpcy5yZXNpemUkID0gb2Yodmlld3BvcnRTZXJ2ZXJTaXplLmdldCgpKTtcblx0XHR9XG5cdFx0Y29uc3Qgc2l6ZSA9IHRoaXMuZ2V0Vmlld3BvcnRTaXplKCk7XG5cdFx0dGhpcy5fc2l6ZVR5cGVTbmFwc2hvdCA9IGdldFNpemVUeXBlSW5mbyhzaXplLndpZHRoLCB0aGlzLnNpemVUeXBlcyk7XG5cblx0XHRjb25zdCBzaXplRm4gPSAob2JzJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+KSA9PiBvYnMkLnBpcGUoXG5cdFx0XHRzdGFydFdpdGgoc2l6ZSksXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS53aWR0aCA9PT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PT0gYi5oZWlnaHQpLFxuXHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0KTtcblxuXHRcdHRoaXMuc2l6ZVNuYXAkID0gc2l6ZUZuKHRoaXMucmVzaXplU25hcCQpO1xuXHRcdHRoaXMuc2l6ZSQgPSBzaXplRm4odGhpcy5yZXNpemUkKTtcblxuXHRcdGNvbnN0IHNpemVUeXBlRm4gPSAob2JzJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+KSA9PiBvYnMkLnBpcGUoXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS53aWR0aCA9PT0gYi53aWR0aCksXG5cdFx0XHRtYXAoeCA9PiBnZXRTaXplVHlwZUluZm8oeC53aWR0aCwgdGhpcy5zaXplVHlwZXMpKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG5cdFx0XHR0YXAoeCA9PiB0aGlzLl9zaXplVHlwZVNuYXBzaG90ID0geCksXG5cdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHQpO1xuXG5cdFx0dGhpcy5zaXplVHlwZSQgPSBzaXplVHlwZUZuKHRoaXMuc2l6ZSQpO1xuXHRcdHRoaXMuc2l6ZVR5cGVTbmFwJCA9IHNpemVUeXBlRm4odGhpcy5zaXplU25hcCQpO1xuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgc2l6ZSAqL1xuXHRwcml2YXRlIGdldFZpZXdwb3J0U2l6ZSgpOiBWaWV3cG9ydFNpemUge1xuXHRcdGlmICghdGhpcy53aW5kb3dSZWYuaGFzTmF0aXZlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52aWV3cG9ydFNlcnZlclNpemUuZ2V0KCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG5cdFx0aWYgKHVhLmluZGV4T2YoXCJzYWZhcmlcIikgIT09IC0xICYmIHVhLmluZGV4T2YoXCJjaHJvbWVcIikgPT09IC0xKSB7IC8vIHNhZmFyaSBzdWJ0cmFjdHMgdGhlIHNjcm9sbGJhciB3aWR0aFxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0d2lkdGg6IHRoaXMud2luZG93UmVmLm5hdGl2ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsXG5cdFx0XHRcdGhlaWdodDogdGhpcy53aW5kb3dSZWYubmF0aXZlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHR3aWR0aDogdGhpcy53aW5kb3dSZWYubmF0aXZlLmlubmVyV2lkdGgsXG5cdFx0XHRoZWlnaHQ6IHRoaXMud2luZG93UmVmLm5hdGl2ZS5pbm5lckhlaWdodCxcblx0XHR9O1xuXHR9XG5cbn1cbiJdfQ==
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { ComparisonOperation } from "./viewport.model";
|
|
2
|
-
export function isViewportSizeMatcherExpression(value) {
|
|
3
|
-
if (typeof value !== "object" || !value) {
|
|
4
|
-
return false;
|
|
5
|
-
}
|
|
6
|
-
const args = value;
|
|
7
|
-
if (args.size && args.operation) {
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
export function isViewportSizeMatcherTupleExpression(arg) {
|
|
13
|
-
if (!arg) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
if (Array.isArray(arg)) {
|
|
17
|
-
if (arg.length === 2) {
|
|
18
|
-
const [op] = arg;
|
|
19
|
-
return operations.includes(op);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
const operations = Object.values(ComparisonOperation);
|
|
25
|
-
export const COMPARISON_OPERATION_FUNC_MAPPING = {
|
|
26
|
-
[ComparisonOperation.equals]: (a, b) => a === b,
|
|
27
|
-
[ComparisonOperation.notEquals]: (a, b) => a !== b,
|
|
28
|
-
[ComparisonOperation.lessThan]: (a, b) => a < b,
|
|
29
|
-
[ComparisonOperation.lessOrEqualThan]: (a, b) => a <= b,
|
|
30
|
-
[ComparisonOperation.greaterThan]: (a, b) => a > b,
|
|
31
|
-
[ComparisonOperation.greaterOrEqualThan]: (a, b) => a >= b,
|
|
32
|
-
};
|
|
33
|
-
export function isViewportConditionMatch(evaluateSize, conditions, viewportSizeTypeInfoRefs) {
|
|
34
|
-
const isExcluded = match(conditions.sizeTypeExclude, evaluateSize.name, false);
|
|
35
|
-
let isIncluded;
|
|
36
|
-
let isExpressionTruthy;
|
|
37
|
-
if (!isExcluded && conditions.expression) {
|
|
38
|
-
const ref = viewportSizeTypeInfoRefs[conditions.expression.size];
|
|
39
|
-
if (!ref) {
|
|
40
|
-
throw new Error(`Viewport size type is invalid. Size type: '${conditions.expression.size}'`);
|
|
41
|
-
}
|
|
42
|
-
const expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expression.operation];
|
|
43
|
-
isExpressionTruthy = expMatcher(evaluateSize.type, ref.type);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
isIncluded = match(conditions.sizeType, evaluateSize.name, true);
|
|
47
|
-
}
|
|
48
|
-
const shouldRender = (isExpressionTruthy || isIncluded) && !isExcluded;
|
|
49
|
-
// console.warn(">>> shouldRender", { evaluateSize, conditions, shouldRender });
|
|
50
|
-
return !!shouldRender;
|
|
51
|
-
}
|
|
52
|
-
function match(value, targetValue, defaultValue) {
|
|
53
|
-
if (!value) {
|
|
54
|
-
return defaultValue;
|
|
55
|
-
}
|
|
56
|
-
return Array.isArray(value)
|
|
57
|
-
? value.includes(targetValue)
|
|
58
|
-
: value === targetValue;
|
|
59
|
-
}
|
|
60
|
-
export function getSizeTypeInfo(width, sizeTypes) {
|
|
61
|
-
const lastEntryIndex = sizeTypes.length - 1;
|
|
62
|
-
for (let idx = 0; idx < lastEntryIndex; idx++) {
|
|
63
|
-
const viewportSizeTypeInfo = sizeTypes[idx];
|
|
64
|
-
if (width <= viewportSizeTypeInfo.widthThreshold) {
|
|
65
|
-
return viewportSizeTypeInfo;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return sizeTypes[lastEntryIndex];
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Converts the breakpoints into a 2 dimensional array containing the name and width, and sorted from
|
|
72
|
-
* smallest to largest.
|
|
73
|
-
* @param breakpoints the breakpoints obtained from the config
|
|
74
|
-
* @internal
|
|
75
|
-
*/
|
|
76
|
-
function getSortedBreakpoints(breakpoints) {
|
|
77
|
-
return Object.entries(breakpoints)
|
|
78
|
-
.sort(([, widthA], [, widthB]) => widthA - widthB);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* A util function which generates the ViewportSizeTypeInfo.type for each breakpoint.
|
|
82
|
-
* @param breakpoints the custom breakpoints
|
|
83
|
-
*/
|
|
84
|
-
export function generateViewportSizeType(breakpoints) {
|
|
85
|
-
return Object.freeze(getSortedBreakpoints(breakpoints).reduce((dictionary, [name], index) => {
|
|
86
|
-
dictionary[name] = index;
|
|
87
|
-
dictionary[index] = name;
|
|
88
|
-
return dictionary;
|
|
89
|
-
}, {}));
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Pre-processes the given breakpoints into an ordered list from smallest to largest while generating
|
|
93
|
-
* all the necessary information on the viewport.
|
|
94
|
-
* @param breakpoints the breakpoints obtained from the config
|
|
95
|
-
* @internal
|
|
96
|
-
*/
|
|
97
|
-
export function generateViewportSizeTypeInfoList(breakpoints) {
|
|
98
|
-
return getSortedBreakpoints(breakpoints)
|
|
99
|
-
.map(([name, width], index) => (Object.freeze({
|
|
100
|
-
name,
|
|
101
|
-
type: index,
|
|
102
|
-
widthThreshold: width
|
|
103
|
-
})));
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Converts the breakpoint list into a dictionary while using the name as key.
|
|
107
|
-
* @param breakpointList the list of breakpoints
|
|
108
|
-
* @internal
|
|
109
|
-
*/
|
|
110
|
-
export function generateViewportSizeTypeInfoRefs(breakpointList) {
|
|
111
|
-
return Object.freeze(breakpointList.reduce((dictionary, breakpoint) => {
|
|
112
|
-
dictionary[breakpoint.name] = breakpoint;
|
|
113
|
-
dictionary[breakpoint.type] = breakpoint;
|
|
114
|
-
return dictionary;
|
|
115
|
-
}, {}));
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9jaXJjbGVjaS9yZXBvL3NyYy8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L3ZpZXdwb3J0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNOLG1CQUFtQixFQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxLQUFjO0lBQzdELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0tBQ2I7SUFDRCxNQUFNLElBQUksR0FBMkMsS0FBSyxDQUFDO0lBQzNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0tBQ1o7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsb0NBQW9DLENBQUMsR0FBWTtJQUNoRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1QsT0FBTyxLQUFLLENBQUM7S0FDYjtJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN2QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDakIsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQy9CO0tBQ0Q7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUM7QUFHRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQWtEO0lBQy9GLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFD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QUFFO1FBQ2xGLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLE9BQU8sVUFBVSxDQUFDO0lBQ25CLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDTixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tIFwiLi4vaW50ZXJuYWwvaW50ZXJuYWwubW9kZWxcIjtcbmltcG9ydCB7XG5cdENvbXBhcmlzb25PcGVyYXRpb24sXG5cdFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uLFxuXHRWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0Vmlld3BvcnRNYXRjaENvbmRpdGlvbnNcbn0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbiB7XG5cdGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgIXZhbHVlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGNvbnN0IGFyZ3M6IFBhcnRpYWw8Vmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24+ID0gdmFsdWU7XG5cdGlmIChhcmdzLnNpemUgJiYgYXJncy5vcGVyYXRpb24pIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpZXdwb3J0U2l6ZU1hdGNoZXJUdXBsZUV4cHJlc3Npb24oYXJnOiB1bmtub3duKTogYXJnIGlzIFtDb21wYXJpc29uT3BlcmF0aW9uLCBzdHJpbmddIHtcblx0aWYgKCFhcmcpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0aWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdGlmIChhcmcubGVuZ3RoID09PSAyKSB7XG5cdFx0XHRjb25zdCBbb3BdID0gYXJnO1xuXHRcdFx0cmV0dXJuIG9wZXJhdGlvbnMuaW5jbHVkZXMob3ApO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cblxuY29uc3Qgb3BlcmF0aW9ucyA9IE9iamVjdC52YWx1ZXMoQ29tcGFyaXNvbk9wZXJhdGlvbik7XG5cbmV4cG9ydCBjb25zdCBDT01QQVJJU09OX09QRVJBVElPTl9GVU5DX01BUFBJTkc6IERpY3Rpb25hcnk8KGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBib29sZWFuPiA9IHtcblx0W0NvbXBhcmlzb25PcGVyYXRpb24uZXF1YWxzXTogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhID09PSBiLFxuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5ub3RFcXVhbHNdOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgIT09IGIsXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmxlc3NUaGFuXTogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhIDwgYixcblx0W0NvbXBhcmlzb25PcGVyYXRpb24ubGVzc09yRXF1YWxUaGFuXTogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhIDw9IGIsXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmdyZWF0ZXJUaGFuXTogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhID4gYixcblx0W0NvbXBhcmlzb25PcGVyYXRpb24uZ3JlYXRlck9yRXF1YWxUaGFuXTogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhID49IGIsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWaWV3cG9ydENvbmRpdGlvbk1hdGNoKFxuXHRldmFsdWF0ZVNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxuXHRjb25kaXRpb25zOiBWaWV3cG9ydE1hdGNoQ29uZGl0aW9ucyxcblx0dmlld3BvcnRTaXplVHlwZUluZm9SZWZzOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPlxuKTogYm9vbGVhbiB7XG5cdGNvbnN0IGlzRXhjbHVkZWQgPSBtYXRjaChjb25kaXRpb25zLnNpemVUeXBlRXhjbHVkZSwgZXZhbHVhdGVTaXplLm5hbWUsIGZhbHNlKTtcblx0bGV0IGlzSW5jbHVkZWQ7XG5cdGxldCBpc0V4cHJlc3Npb25UcnV0aHk7XG5cblx0aWYgKCFpc0V4Y2x1ZGVkICYmIGNvbmRpdGlvbnMuZXhwcmVzc2lvbikge1xuXHRcdGNvbnN0IHJlZiA9IHZpZXdwb3J0U2l6ZVR5cGVJbmZvUmVmc1tjb25kaXRpb25zLmV4cHJlc3Npb24uc2l6ZV07XG5cdFx0aWYoIXJlZikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBWaWV3cG9ydCBzaXplIHR5cGUgaXMgaW52YWxpZC4gU2l6ZSB0eXBlOiAnJHtjb25kaXRpb25zLmV4cHJlc3Npb24uc2l6ZX0nYCk7XG5cdFx0fVxuXHRcdGNvbnN0IGV4cE1hdGNoZXIgPSBDT01QQVJJU09OX09QRVJBVElPTl9GVU5DX01BUFBJTkdbY29uZGl0aW9ucy5leHByZXNzaW9uLm9wZXJhdGlvbl07XG5cblx0XHRpc0V4cHJlc3Npb25UcnV0aHkgPSBleHBNYXRjaGVyKGV2YWx1YXRlU2l6ZS50eXBlLCByZWYudHlwZSk7XG5cdH0gZWxzZSB7XG5cdFx0aXNJbmNsdWRlZCA9IG1hdGNoKGNvbmRpdGlvbnMuc2l6ZVR5cGUsIGV2YWx1YXRlU2l6ZS5uYW1lLCB0cnVlKTtcblx0fVxuXG5cdGNvbnN0IHNob3VsZFJlbmRlciA9IChpc0V4cHJlc3Npb25UcnV0aHkgfHwgaXNJbmNsdWRlZCkgJiYgIWlzRXhjbHVkZWQ7XG5cdC8vIGNvbnNvbGUud2FybihcIj4+PiBzaG91bGRSZW5kZXJcIiwgeyBldmFsdWF0ZVNpemUsIGNvbmRpdGlvbnMsIHNob3VsZFJlbmRlciB9KTtcblx0cmV0dXJuICEhc2hvdWxkUmVuZGVyO1xufVxuXG5mdW5jdGlvbiBtYXRjaCh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkLCB0YXJnZXRWYWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGJvb2xlYW4pIHtcblx0aWYgKCF2YWx1ZSkge1xuXHRcdHJldHVybiBkZWZhdWx0VmFsdWU7XG5cdH1cblxuXHRyZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcblx0XHQ/IHZhbHVlLmluY2x1ZGVzKHRhcmdldFZhbHVlKVxuXHRcdDogdmFsdWUgPT09IHRhcmdldFZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2l6ZVR5cGVJbmZvKHdpZHRoOiBudW1iZXIsIHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSk6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHtcblx0Y29uc3QgbGFzdEVudHJ5SW5kZXggPSBzaXplVHlwZXMubGVuZ3RoIC0gMTtcblxuXHRmb3IgKGxldCBpZHggPSAwOyBpZHggPCBsYXN0RW50cnlJbmRleDsgaWR4KyspIHtcblx0XHRjb25zdCB2aWV3cG9ydFNpemVUeXBlSW5mbyA9IHNpemVUeXBlc1tpZHhdO1xuXG5cdFx0aWYgKHdpZHRoIDw9IHZpZXdwb3J0U2l6ZVR5cGVJbmZvLndpZHRoVGhyZXNob2xkKSB7XG5cdFx0XHRyZXR1cm4gdmlld3BvcnRTaXplVHlwZUluZm87XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHNpemVUeXBlc1tsYXN0RW50cnlJbmRleF07XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGJyZWFrcG9pbnRzIGludG8gYSAyIGRpbWVuc2lvbmFsIGFycmF5IGNvbnRhaW5pbmcgdGhlIG5hbWUgYW5kIHdpZHRoLCBhbmQgc29ydGVkIGZyb21cbiAqICBzbWFsbGVzdCB0byBsYXJnZXN0LlxuICogQHBhcmFtIGJyZWFrcG9pbnRzIHRoZSBicmVha3BvaW50cyBvYnRhaW5lZCBmcm9tIHRoZSBjb25maWdcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBnZXRTb3J0ZWRCcmVha3BvaW50cyhicmVha3BvaW50czogRGljdGlvbmFyeTxudW1iZXI+KTogW3N0cmluZywgbnVtYmVyXVtdIHtcblx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKGJyZWFrcG9pbnRzKVxuXHRcdC5zb3J0KChbLCB3aWR0aEFdLCBbLCB3aWR0aEJdKSA9PiB3aWR0aEEgLSB3aWR0aEIpO1xufVxuXG4vKipcbiAqIEEgdXRpbCBmdW5jdGlvbiB3aGljaCBnZW5lcmF0ZXMgdGhlIFZpZXdwb3J0U2l6ZVR5cGVJbmZvLnR5cGUgZm9yIGVhY2ggYnJlYWtwb2ludC5cbiAqIEBwYXJhbSBicmVha3BvaW50cyB0aGUgY3VzdG9tIGJyZWFrcG9pbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4+KGJyZWFrcG9pbnRzOiBUKTogVCAmIFJlY29yZDxudW1iZXIsIHN0cmluZz4ge1xuXHRyZXR1cm4gT2JqZWN0LmZyZWV6ZShcblx0XHRnZXRTb3J0ZWRCcmVha3BvaW50cyhicmVha3BvaW50cykucmVkdWNlPFJlY29yZDxudW1iZXIgfCBzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4+KFxuXHRcdFx0KGRpY3Rpb25hcnksIFtuYW1lXSwgaW5kZXgpID0+IHtcblx0XHRcdFx0ZGljdGlvbmFyeVtuYW1lXSA9IGluZGV4O1xuXHRcdFx0XHRkaWN0aW9uYXJ5W2luZGV4XSA9IG5hbWU7XG5cdFx0XHRcdHJldHVybiBkaWN0aW9uYXJ5O1xuXHRcdFx0fSwge31cblx0XHQpXG5cdCkgYXMgVCAmIFJlY29yZDxudW1iZXIsIHN0cmluZz47XG59XG5cbi8qKlxuICogUHJlLXByb2Nlc3NlcyB0aGUgZ2l2ZW4gYnJlYWtwb2ludHMgaW50byBhbiBvcmRlcmVkIGxpc3QgZnJvbSBzbWFsbGVzdCB0byBsYXJnZXN0IHdoaWxlIGdlbmVyYXRpbmdcbiAqICBhbGwgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBvbiB0aGUgdmlld3BvcnQuXG4gKiBAcGFyYW0gYnJlYWtwb2ludHMgdGhlIGJyZWFrcG9pbnRzIG9idGFpbmVkIGZyb20gdGhlIGNvbmZpZ1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvTGlzdChicmVha3BvaW50czogRGljdGlvbmFyeTxudW1iZXI+KTogVmlld3BvcnRTaXplVHlwZUluZm9bXSB7XG5cdHJldHVybiBnZXRTb3J0ZWRCcmVha3BvaW50cyhicmVha3BvaW50cylcblx0XHQubWFwKChbbmFtZSwgd2lkdGhdLCBpbmRleCkgPT5cblx0XHRcdChPYmplY3QuZnJlZXplKHtcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0dHlwZTogaW5kZXgsXG5cdFx0XHRcdHdpZHRoVGhyZXNob2xkOiB3aWR0aFxuXHRcdFx0fSkpXG5cdFx0KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludCBsaXN0IGludG8gYSBkaWN0aW9uYXJ5IHdoaWxlIHVzaW5nIHRoZSBuYW1lIGFzIGtleS5cbiAqIEBwYXJhbSBicmVha3BvaW50TGlzdCB0aGUgbGlzdCBvZiBicmVha3BvaW50c1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvUmVmcyhicmVha3BvaW50TGlzdDogVmlld3BvcnRTaXplVHlwZUluZm9bXSk6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+IHtcblx0cmV0dXJuIE9iamVjdC5mcmVlemUoXG5cdFx0YnJlYWtwb2ludExpc3QucmVkdWNlPERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+PigoZGljdGlvbmFyeSwgYnJlYWtwb2ludCkgPT4ge1xuXHRcdFx0ZGljdGlvbmFyeVticmVha3BvaW50Lm5hbWVdID0gYnJlYWtwb2ludDtcblx0XHRcdGRpY3Rpb25hcnlbYnJlYWtwb2ludC50eXBlXSA9IGJyZWFrcG9pbnQ7XG5cdFx0XHRyZXR1cm4gZGljdGlvbmFyeTtcblx0XHR9LCB7fSlcblx0KTtcbn1cbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ssv-ngx.ux.js","sources":["../../src/viewport/viewport-data/viewport-data-matcher.ts","../../src/viewport/viewport.const.ts","../../src/config.ts","../../src/platform/window.ts","../../src/viewport/viewport.model.ts","../../src/viewport/viewport-server-size.service.ts","../../src/viewport/viewport.util.ts","../../src/viewport/viewport.service.ts","../../src/viewport/viewport-data/viewport-data.utils.ts","../../src/viewport/viewport-data/viewport-data.service.ts","../../src/viewport/viewport-data/viewport-data.pipe.ts","../../src/viewport/viewport-matcher-var.directive.ts","../../src/viewport/viewport-matcher.directive.ts","../../src/module.ts","../../src/version.ts","../../src/ssv-ngx.ux.ts"],"sourcesContent":["import { Dictionary } from \"../../internal/internal.model\";\nimport { 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// eslint-disable-next-line @typescript-eslint/prefer-for-of\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 { Dictionary } from \"../internal/internal.model\";\nimport { ViewportDataMatchStrategy } from \"./viewport-data/viewport-data-matcher\";\nimport { UxViewportOptions } 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: 1280,\n\tfhd: 1920,\n\tqhd: 2560,\n\tuhd4k: 3840,\n\tuhd8k: 7680,\n};\n\nexport const UX_VIEWPORT_DEFAULT_CONFIG: UxViewportOptions = {\n\tresizePollingSpeed: 33,\n\tbreakpoints: UX_VIEWPORT_DEFAULT_BREAKPOINTS,\n\tdefaultDataMatchStrategy: ViewportDataMatchStrategy.smaller,\n};\n","import { InjectionToken } from \"@angular/core\";\nimport { UX_VIEWPORT_DEFAULT_CONFIG } from \"./viewport/viewport.const\";\nimport { UxViewportOptions } from \"./viewport/viewport.model\";\n\nexport interface UxOptions {\n\tviewport: UxViewportOptions;\n}\n\nexport const UX_DEFAULT_CONFIG: UxOptions = {\n\tviewport: UX_VIEWPORT_DEFAULT_CONFIG,\n};\n\nexport const UX_CONFIG = new InjectionToken<UxOptions>(\"@ssv/ngx.ux-config\");\n","import { InjectionToken, Injectable, Inject } from \"@angular/core\";\n\nexport const WINDOW = new InjectionToken<Window>(\"Window\");\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class WindowRef {\n\n\tconstructor(\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\t\t@Inject(WINDOW) private window: any\n\t) {\n\t}\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","import { Dictionary } from \"../internal/internal.model\";\nimport { ViewportDataMatchStrategy } from \"./viewport-data\";\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\tfhd = 4,\n\tqhd = 6,\n\tuhd4k = 7,\n\tuhd8k = 8,\n}\n\nexport enum ComparisonOperation {\n\tequals = \"=\",\n\tnotEquals = \"<>\",\n\tlessThan = \"<\",\n\tlessOrEqualThan = \"<=\",\n\tgreaterThan = \">\",\n\tgreaterOrEqualThan = \">=\",\n}\n\nexport enum DeviceType {\n\tdesktop = \"desktop\",\n\tmobile = \"mobile\",\n\ttablet = \"tablet\"\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\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: ComparisonOperation;\n}\n","import { Injectable, Inject, InjectionToken, Optional } from \"@angular/core\";\n\nimport { Dictionary } from \"../internal/internal.model\";\nimport { DeviceType, ViewportSize } from \"./viewport.model\";\nimport { UxOptions } from \"../config\";\n\n// todo: make this configurable\n/** Viewport size for SSR. */\nconst viewportSizeSSR: Dictionary<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 UX_VIEWPORT_SSR_DEVICE = new InjectionToken<UxOptions>(\"@ssv/ngx.ux-config/viewport/ssr-device\");\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportServerSizeService {\n\n\tconstructor(\n\t\t@Optional() @Inject(UX_VIEWPORT_SSR_DEVICE) private deviceType: DeviceType,\n\t) {\n\t}\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 { Injectable, Inject } from \"@angular/core\";\nimport { Observable, fromEvent, of } from \"rxjs\";\nimport {\n\tmap,\n\ttap,\n\tdistinctUntilChanged,\n\tstartWith,\n\tshare,\n\tshareReplay,\n\tauditTime,\n} from \"rxjs/operators\";\n\nimport { UxOptions, UX_CONFIG } from \"../config\";\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 { Dictionary } from \"../internal/internal.model\";\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\t@Inject(UX_CONFIG) config: UxOptions,\n\t) {\n\t\tthis._sizeTypes = generateViewportSizeTypeInfoList(config.viewport.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.viewport.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 } from \"rxjs\";\nimport { distinctUntilChanged, map } from \"rxjs/operators\";\nimport { UX_CONFIG, UxOptions } from \"../../config\";\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\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportDataService {\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\t@Inject(UX_CONFIG) private config: UxOptions,\n\t) {\n\t}\n\n\t/** Get data for match. */\n\tget<T>(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tstrategy: ViewportDataMatchStrategy = this.config.viewport.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.viewport.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 } from \"rxjs\";\nimport { tap } from \"rxjs/operators\";\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/* eslint-disable @angular-eslint/no-pipe-impure */\n@Pipe({\n\tname: \"ssvViewportData\",\n\tpure: false\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 } from \"rxjs\";\nimport { tap, map, takeUntil } from \"rxjs/operators\";\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})\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 } from \"rxjs\";\nimport { tap, filter, pairwise, startWith } from \"rxjs/operators\";\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})\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, ModuleWithProviders, InjectionToken, Optional } from \"@angular/core\";\n\nimport { SsvViewportMatcherDirective, SsvViewportMatcherVarDirective } from \"./viewport/index\";\nimport { UxOptions, UX_DEFAULT_CONFIG, UX_CONFIG } from \"./config\";\nimport { WINDOW } from \"./platform/window\";\nimport { PartialDeep } from \"./internal/internal.model\";\nimport { ViewportDataPipe } from \"./viewport/viewport-data/viewport-data.pipe\";\n\n/** @internal */\nexport const MODULE_CONFIG_DATA = new InjectionToken<UxOptions>(\"@ssv/ngx.ux/configData\");\n\nconst components = [\n\tSsvViewportMatcherDirective,\n\tSsvViewportMatcherVarDirective,\n\tViewportDataPipe,\n];\n\n// todo: create module for Viewport\n@NgModule({\n\tdeclarations: [components],\n\tproviders: [\n\t\t{ provide: UX_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },\n\t\t{ provide: WINDOW, useFactory: _window },\n\t],\n\texports: [...components],\n})\nexport class SsvUxModule {\n\n\tstatic forRoot(config?: PartialDeep<UxOptions> | (() => PartialDeep<UxOptions>)): ModuleWithProviders<SsvUxModule> {\n\t\treturn {\n\t\t\tngModule: SsvUxModule,\n\t\t\tproviders: [\n\t\t\t\t{ provide: MODULE_CONFIG_DATA, useValue: config },\n\t\t\t],\n\t\t};\n\t}\n\n}\n\n/** @internal */\nexport function _moduleConfigFactory(config: UxOptions | (() => UxOptions)): UxOptions {\n\tif(!config) {\n\t\treturn UX_DEFAULT_CONFIG;\n\t}\n\tconst uxOptions = typeof config === \"function\" ? config() : config;\n\tconst viewport = {\n\t\t...UX_DEFAULT_CONFIG.viewport,\n\t\t...uxOptions.viewport\n\t}; // breakpoints shouldn't be merged\n\n\treturn { viewport };\n}\n\n/** @internal */\nexport function _window(): unknown {\n\tif (typeof window !== \"undefined\") {\n\t\treturn window;\n\t}\n\treturn {};\n}\n","export const VERSION = \"2.0.1-dev198\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {WINDOW as ɵb,WindowRef as ɵc} from './platform/window';\nexport {UX_VIEWPORT_DEFAULT_CONFIG as ɵa} from './viewport/viewport.const';"],"names":["matchStrategyHandlerMap"],"mappings":"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"}
|
package/ssv-ngx.ux.d.ts
DELETED
package/ssv-ngx.ux.metadata.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"ɵa":{"resizePollingSpeed":33,"breakpoints":{"__symbolic":"reference","name":"UX_VIEWPORT_DEFAULT_BREAKPOINTS"},"defaultDataMatchStrategy":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ViewportDataMatchStrategy"},"member":"smaller"}},"ViewportDataService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":17,"character":3},"arguments":[{"__symbolic":"reference","name":"UX_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"ViewportService"},{"__symbolic":"reference","name":"UxOptions"}]}],"get":[{"__symbolic":"method"}],"get$":[{"__symbolic":"method"}],"generateRules":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ViewportDataPipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":8,"character":1},"arguments":[{"name":"ssvViewportData","pure":false}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ViewportDataService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":22,"character":15}]}],"transform":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ViewportDataConfig":{"__symbolic":"interface"},"ViewportDataMatchStrategy":{"exact":0,"smaller":1,"larger":2,"closestSmallerFirst":3,"closestLargerFirst":4},"ViewportDataMatchStrategyLiteral":{"__symbolic":"interface"},"SsvViewportMatcherVarDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":30,"character":1},"arguments":[{"selector":"[ssvViewportMatcherVar]"}]}],"members":{"condition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":2},"arguments":["ssvViewportMatcherVarWhen"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ViewportService"},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":59,"character":25},{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"SsvViewportMatcherVarContext"}]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateView":[{"__symbolic":"method"}]}},"SsvViewportMatcherVarContext":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null]}]}},"SsvViewportMatcherDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":30,"character":1},"arguments":[{"selector":"[ssvViewportMatcher]","exportAs":"ssvViewportMatcher"}]}],"members":{"ssvViewportMatcher":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":2}}]}],"ssvViewportMatcherExclude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":2}}]}],"ssvViewportMatcherElse":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":73,"character":2}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ViewportService"},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":83,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":84,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":85,"character":15},{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"SsvViewportMatcherContext"}]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_updateView":[{"__symbolic":"method"}]}},"SsvViewportMatcherContext":{"__symbolic":"class","members":{}},"UX_VIEWPORT_SSR_DEVICE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":23,"character":42},"arguments":["@ssv/ngx.ux-config/viewport/ssr-device"]},"ViewportServerSizeService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":15},"arguments":[{"__symbolic":"reference","name":"UX_VIEWPORT_SSR_DEVICE"}]}]],"parameters":[{"__symbolic":"reference","name":"DeviceType"}]}],"get":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ComparisonOperation":{"equals":"=","notEquals":"<>","lessThan":"<","lessOrEqualThan":"<=","greaterThan":">","greaterOrEqualThan":">="},"DeviceType":{"desktop":"desktop","mobile":"mobile","tablet":"tablet"},"UxViewportOptions":{"__symbolic":"interface"},"ViewportSize":{"__symbolic":"interface"},"ViewportSizeType":{"xsmall":0,"small":1,"medium":2,"large":3,"fhd":4,"qhd":6,"uhd4k":7,"uhd8k":8},"ViewportSizeTypeInfo":{"__symbolic":"interface"},"ViewportService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":58,"character":3},"arguments":[{"__symbolic":"reference","name":"UX_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ViewportServerSizeService"},{"__symbolic":"reference","name":"UxOptions"}]}],"getViewportSize":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"generateViewportSizeType":{"__symbolic":"function","parameters":["breakpoints"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":100,"character":9,"context":{"name":"getSortedBreakpoints"},"module":"./viewport/viewport.util"}]}},"UX_VIEWPORT_DEFAULT_BREAKPOINTS":{"xsmall":450,"small":767,"medium":992,"large":1280,"fhd":1920,"qhd":2560,"uhd4k":3840,"uhd8k":7680},"UxOptions":{"__symbolic":"interface"},"UX_DEFAULT_CONFIG":{"viewport":{"__symbolic":"reference","name":"ɵa"}},"UX_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":12,"character":29},"arguments":["@ssv/ngx.ux-config"]},"MODULE_CONFIG_DATA":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":38},"arguments":["@ssv/ngx.ux/configData"]},"SsvUxModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":18,"character":1},"arguments":[{"declarations":[[{"__symbolic":"reference","name":"SsvViewportMatcherDirective"},{"__symbolic":"reference","name":"SsvViewportMatcherVarDirective"},{"__symbolic":"reference","name":"ViewportDataPipe"}]],"providers":[{"provide":{"__symbolic":"reference","name":"UX_CONFIG"},"useFactory":{"__symbolic":"reference","name":"_moduleConfigFactory"},"deps":[[{"__symbolic":"reference","name":"MODULE_CONFIG_DATA"},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":21,"character":90}}]]},{"provide":{"__symbolic":"reference","name":"ɵb"},"useFactory":{"__symbolic":"reference","name":"_window"}}],"exports":[{"__symbolic":"reference","name":"SsvViewportMatcherDirective"},{"__symbolic":"reference","name":"SsvViewportMatcherVarDirective"},{"__symbolic":"reference","name":"ViewportDataPipe"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"SsvUxModule"},"providers":[{"provide":{"__symbolic":"reference","name":"MODULE_CONFIG_DATA"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"_moduleConfigFactory":{"__symbolic":"function"},"_window":{"__symbolic":"function"},"VERSION":"2.0.1-dev198","ɵb":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":26},"arguments":["Window"]},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":11,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵb"}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}]},"statics":{"ɵprov":{}}}},"origins":{"ɵa":"./viewport/viewport.const","ViewportDataService":"./viewport/viewport-data/viewport-data.service","ViewportDataPipe":"./viewport/viewport-data/viewport-data.pipe","ViewportDataConfig":"./viewport/viewport-data/viewport-data-matcher","ViewportDataMatchStrategy":"./viewport/viewport-data/viewport-data-matcher","ViewportDataMatchStrategyLiteral":"./viewport/viewport-data/viewport-data-matcher","SsvViewportMatcherVarDirective":"./viewport/viewport-matcher-var.directive","SsvViewportMatcherVarContext":"./viewport/viewport-matcher-var.directive","SsvViewportMatcherDirective":"./viewport/viewport-matcher.directive","SsvViewportMatcherContext":"./viewport/viewport-matcher.directive","UX_VIEWPORT_SSR_DEVICE":"./viewport/viewport-server-size.service","ViewportServerSizeService":"./viewport/viewport-server-size.service","ComparisonOperation":"./viewport/viewport.model","DeviceType":"./viewport/viewport.model","UxViewportOptions":"./viewport/viewport.model","ViewportSize":"./viewport/viewport.model","ViewportSizeType":"./viewport/viewport.model","ViewportSizeTypeInfo":"./viewport/viewport.model","ViewportService":"./viewport/viewport.service","generateViewportSizeType":"./viewport/viewport.util","UX_VIEWPORT_DEFAULT_BREAKPOINTS":"./viewport/viewport.const","UxOptions":"./config","UX_DEFAULT_CONFIG":"./config","UX_CONFIG":"./config","MODULE_CONFIG_DATA":"./module","SsvUxModule":"./module","_moduleConfigFactory":"./module","_window":"./module","VERSION":"./version","ɵb":"./platform/window","ɵc":"./platform/window"},"importAs":"@ssv/ngx.ux"}
|