@ssv/ngx.ux 2.0.2 → 2.1.0-dev.23
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/LICENSE +21 -21
- package/README.md +296 -297
- package/config.d.ts +7 -7
- package/esm2020/config.mjs +7 -7
- package/esm2020/index.mjs +5 -5
- package/esm2020/internal/internal.model.mjs +2 -2
- package/esm2020/module.mjs +65 -65
- package/esm2020/platform/window.mjs +30 -30
- package/esm2020/ssv-ngx.ux.mjs +4 -4
- package/esm2020/version.mjs +2 -2
- package/esm2020/viewport/index.mjs +9 -9
- package/esm2020/viewport/viewport-data/index.mjs +4 -4
- package/esm2020/viewport/viewport-data/viewport-data-matcher.mjs +108 -108
- package/esm2020/viewport/viewport-data/viewport-data.pipe.mjs +43 -43
- package/esm2020/viewport/viewport-data/viewport-data.service.mjs +37 -37
- package/esm2020/viewport/viewport-data/viewport-data.utils.mjs +100 -100
- package/esm2020/viewport/viewport-matcher-var.directive.mjs +63 -63
- package/esm2020/viewport/viewport-matcher.directive.mjs +131 -131
- package/esm2020/viewport/viewport-server-size.service.mjs +43 -43
- package/esm2020/viewport/viewport.const.mjs +17 -18
- package/esm2020/viewport/viewport.model.mjs +30 -31
- package/esm2020/viewport/viewport.service.mjs +66 -67
- package/esm2020/viewport/viewport.util.mjs +117 -117
- package/fesm2015/ssv-ngx.ux.mjs +787 -790
- package/fesm2015/ssv-ngx.ux.mjs.map +1 -1
- package/fesm2020/ssv-ngx.ux.mjs +781 -784
- package/fesm2020/ssv-ngx.ux.mjs.map +1 -1
- package/index.d.ts +4 -4
- package/internal/internal.model.d.ts +9 -9
- package/module.d.ts +19 -19
- package/package.json +1 -1
- package/platform/window.d.ts +13 -13
- package/version.d.ts +1 -1
- package/viewport/index.d.ts +8 -8
- package/viewport/viewport-data/index.d.ts +3 -3
- package/viewport/viewport-data/viewport-data-matcher.d.ts +32 -32
- package/viewport/viewport-data/viewport-data.pipe.d.ts +18 -18
- package/viewport/viewport-data/viewport-data.service.d.ts +20 -20
- package/viewport/viewport-data/viewport-data.utils.d.ts +21 -21
- package/viewport/viewport-matcher-var.directive.d.ts +25 -25
- package/viewport/viewport-matcher.directive.d.ts +33 -33
- package/viewport/viewport-server-size.service.d.ts +12 -12
- package/viewport/viewport.const.d.ts +5 -5
- package/viewport/viewport.model.d.ts +56 -57
- package/viewport/viewport.service.d.ts +37 -37
- package/viewport/viewport.util.d.ts +25 -25
- package/CHANGELOG.md +0 -149
- 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 +0 -807
- 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,43 +1,43 @@
|
|
|
1
|
-
import { Subscription } from "rxjs";
|
|
2
|
-
import { tap } from "rxjs/operators";
|
|
3
|
-
import { Pipe } from "@angular/core";
|
|
4
|
-
import { ViewportDataMatchStrategy } from "./viewport-data-matcher";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./viewport-data.service";
|
|
7
|
-
/* eslint-disable @angular-eslint/no-pipe-impure */
|
|
8
|
-
export class ViewportDataPipe {
|
|
9
|
-
constructor(viewportData, cdr) {
|
|
10
|
-
this.viewportData = viewportData;
|
|
11
|
-
this.cdr = cdr;
|
|
12
|
-
this.markForTransform = true;
|
|
13
|
-
this.data$$ = Subscription.EMPTY;
|
|
14
|
-
}
|
|
15
|
-
transform(data, strategy) {
|
|
16
|
-
if (!this.markForTransform && data === this.data && strategy === this.strategy) {
|
|
17
|
-
return this.value;
|
|
18
|
-
}
|
|
19
|
-
this.data = data;
|
|
20
|
-
this.strategy = strategy;
|
|
21
|
-
this.data$$.unsubscribe();
|
|
22
|
-
this.data$$ = this.viewportData.get$(data, ViewportDataMatchStrategy[strategy]).pipe(tap(value => {
|
|
23
|
-
this.markForTransform = true;
|
|
24
|
-
this.value = value;
|
|
25
|
-
this.cdr.markForCheck();
|
|
26
|
-
})).subscribe();
|
|
27
|
-
this.markForTransform = false;
|
|
28
|
-
return this.value;
|
|
29
|
-
}
|
|
30
|
-
ngOnDestroy() {
|
|
31
|
-
this.data$$.unsubscribe();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
ViewportDataPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataPipe, deps: [{ token: i1.ViewportDataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
35
|
-
ViewportDataPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataPipe, name: "ssvViewportData", pure: false });
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataPipe, decorators: [{
|
|
37
|
-
type: Pipe,
|
|
38
|
-
args: [{
|
|
39
|
-
name: "ssvViewportData",
|
|
40
|
-
pure: false
|
|
41
|
-
}]
|
|
42
|
-
}], ctorParameters: function () { return [{ type: i1.ViewportDataService }, { type: i0.ChangeDetectorRef }]; } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Subscription } from "rxjs";
|
|
2
|
+
import { tap } from "rxjs/operators";
|
|
3
|
+
import { Pipe } from "@angular/core";
|
|
4
|
+
import { ViewportDataMatchStrategy } from "./viewport-data-matcher";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./viewport-data.service";
|
|
7
|
+
/* eslint-disable @angular-eslint/no-pipe-impure */
|
|
8
|
+
export class ViewportDataPipe {
|
|
9
|
+
constructor(viewportData, cdr) {
|
|
10
|
+
this.viewportData = viewportData;
|
|
11
|
+
this.cdr = cdr;
|
|
12
|
+
this.markForTransform = true;
|
|
13
|
+
this.data$$ = Subscription.EMPTY;
|
|
14
|
+
}
|
|
15
|
+
transform(data, strategy) {
|
|
16
|
+
if (!this.markForTransform && data === this.data && strategy === this.strategy) {
|
|
17
|
+
return this.value;
|
|
18
|
+
}
|
|
19
|
+
this.data = data;
|
|
20
|
+
this.strategy = strategy;
|
|
21
|
+
this.data$$.unsubscribe();
|
|
22
|
+
this.data$$ = this.viewportData.get$(data, ViewportDataMatchStrategy[strategy]).pipe(tap(value => {
|
|
23
|
+
this.markForTransform = true;
|
|
24
|
+
this.value = value;
|
|
25
|
+
this.cdr.markForCheck();
|
|
26
|
+
})).subscribe();
|
|
27
|
+
this.markForTransform = false;
|
|
28
|
+
return this.value;
|
|
29
|
+
}
|
|
30
|
+
ngOnDestroy() {
|
|
31
|
+
this.data$$.unsubscribe();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
ViewportDataPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataPipe, deps: [{ token: i1.ViewportDataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
35
|
+
ViewportDataPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataPipe, name: "ssvViewportData", pure: false });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataPipe, decorators: [{
|
|
37
|
+
type: Pipe,
|
|
38
|
+
args: [{
|
|
39
|
+
name: "ssvViewportData",
|
|
40
|
+
pure: false
|
|
41
|
+
}]
|
|
42
|
+
}], ctorParameters: function () { return [{ type: i1.ViewportDataService }, { type: i0.ChangeDetectorRef }]; } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxJQUFJLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBc0IseUJBQXlCLEVBQW9DLE1BQU0seUJBQXlCLENBQUM7OztBQUcxSCxtREFBbUQ7QUFLbkQsTUFBTSxPQUFPLGdCQUFnQjtJQVE1QixZQUNTLFlBQWlDLEVBQ2pDLEdBQXNCO1FBRHRCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVJ2QixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFJeEIsV0FBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFNcEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUF3QixFQUFFLFFBQTBDO1FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkYsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUNGLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFZCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7NkdBcENXLGdCQUFnQjsyR0FBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBSjVCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLEtBQUs7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVmlld3BvcnREYXRhQ29uZmlnLCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5TGl0ZXJhbCB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEtbWF0Y2hlclwiO1xuaW1wb3J0IHsgVmlld3BvcnREYXRhU2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEuc2VydmljZVwiO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tcGlwZS1pbXB1cmUgKi9cbkBQaXBlKHtcblx0bmFtZTogXCJzc3ZWaWV3cG9ydERhdGFcIixcblx0cHVyZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnREYXRhUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG5cblx0cHJpdmF0ZSBtYXJrRm9yVHJhbnNmb3JtID0gdHJ1ZTtcblx0cHJpdmF0ZSB2YWx1ZTogdW5rbm93bjtcblx0cHJpdmF0ZSBkYXRhOiBWaWV3cG9ydERhdGFDb25maWcgfCB1bmRlZmluZWQ7XG5cdHByaXZhdGUgc3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3lMaXRlcmFsIHwgdW5kZWZpbmVkO1xuXHRwcml2YXRlIGRhdGEkJCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHZpZXdwb3J0RGF0YTogVmlld3BvcnREYXRhU2VydmljZSxcblx0XHRwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcblx0KSB7XG5cdH1cblxuXHR0cmFuc2Zvcm0oZGF0YTogVmlld3BvcnREYXRhQ29uZmlnLCBzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneUxpdGVyYWwpOiB1bmtub3duIHtcblx0XHRpZiAoIXRoaXMubWFya0ZvclRyYW5zZm9ybSAmJiBkYXRhID09PSB0aGlzLmRhdGEgJiYgc3RyYXRlZ3kgPT09IHRoaXMuc3RyYXRlZ3kpIHtcblx0XHRcdHJldHVybiB0aGlzLnZhbHVlO1xuXHRcdH1cblx0XHR0aGlzLmRhdGEgPSBkYXRhO1xuXHRcdHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneTtcblxuXHRcdHRoaXMuZGF0YSQkLnVuc3Vic2NyaWJlKCk7XG5cdFx0dGhpcy5kYXRhJCQgPSB0aGlzLnZpZXdwb3J0RGF0YS5nZXQkKGRhdGEsIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3lbc3RyYXRlZ3ldKS5waXBlKFxuXHRcdFx0dGFwKHZhbHVlID0+IHtcblx0XHRcdFx0dGhpcy5tYXJrRm9yVHJhbnNmb3JtID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xuXHRcdFx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblx0XHRcdH0pLFxuXHRcdCkuc3Vic2NyaWJlKCk7XG5cblx0XHR0aGlzLm1hcmtGb3JUcmFuc2Zvcm0gPSBmYWxzZTtcblx0XHRyZXR1cm4gdGhpcy52YWx1ZTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuZGF0YSQkLnVuc3Vic2NyaWJlKCk7XG5cdH1cblxufVxuIl19
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { Inject, Injectable } from "@angular/core";
|
|
2
|
-
import { distinctUntilChanged, map } from "rxjs/operators";
|
|
3
|
-
import { UX_CONFIG } from "../../config";
|
|
4
|
-
import { matchViewportData } from "./viewport-data-matcher";
|
|
5
|
-
import { generateViewportRulesRangeFromDataMatcher } from "./viewport-data.utils";
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../viewport.service";
|
|
8
|
-
export class ViewportDataService {
|
|
9
|
-
constructor(viewport, config) {
|
|
10
|
-
this.viewport = viewport;
|
|
11
|
-
this.config = config;
|
|
12
|
-
}
|
|
13
|
-
/** Get data for match. */
|
|
14
|
-
get(dataConfig, strategy = this.config.viewport.defaultDataMatchStrategy, sizeType = this.viewport.sizeTypeSnapshot) {
|
|
15
|
-
return matchViewportData(dataConfig, sizeType, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);
|
|
16
|
-
}
|
|
17
|
-
/** Get data for match as observable. */
|
|
18
|
-
get$(dataConfig, strategy, throttle = true) {
|
|
19
|
-
return (throttle ? this.viewport.sizeType$ : this.viewport.sizeTypeSnap$).pipe(map(sizeType => this.get(dataConfig, strategy, sizeType)), distinctUntilChanged());
|
|
20
|
-
}
|
|
21
|
-
/** Generate rules based on strategies for data. */
|
|
22
|
-
generateRules(dataConfig, strategy = this.config.viewport.defaultDataMatchStrategy) {
|
|
23
|
-
return generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
ViewportDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataService, deps: [{ token: i1.ViewportService }, { token: UX_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27
|
-
ViewportDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataService, providedIn: "root" });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataService, decorators: [{
|
|
29
|
-
type: Injectable,
|
|
30
|
-
args: [{
|
|
31
|
-
providedIn: "root",
|
|
32
|
-
}]
|
|
33
|
-
}], ctorParameters: function () { return [{ type: i1.ViewportService }, { type: undefined, decorators: [{
|
|
34
|
-
type: Inject,
|
|
35
|
-
args: [UX_CONFIG]
|
|
36
|
-
}] }]; } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Inject, Injectable } from "@angular/core";
|
|
2
|
+
import { distinctUntilChanged, map } from "rxjs/operators";
|
|
3
|
+
import { UX_CONFIG } from "../../config";
|
|
4
|
+
import { matchViewportData } from "./viewport-data-matcher";
|
|
5
|
+
import { generateViewportRulesRangeFromDataMatcher } from "./viewport-data.utils";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../viewport.service";
|
|
8
|
+
export class ViewportDataService {
|
|
9
|
+
constructor(viewport, config) {
|
|
10
|
+
this.viewport = viewport;
|
|
11
|
+
this.config = config;
|
|
12
|
+
}
|
|
13
|
+
/** Get data for match. */
|
|
14
|
+
get(dataConfig, strategy = this.config.viewport.defaultDataMatchStrategy, sizeType = this.viewport.sizeTypeSnapshot) {
|
|
15
|
+
return matchViewportData(dataConfig, sizeType, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);
|
|
16
|
+
}
|
|
17
|
+
/** Get data for match as observable. */
|
|
18
|
+
get$(dataConfig, strategy, throttle = true) {
|
|
19
|
+
return (throttle ? this.viewport.sizeType$ : this.viewport.sizeTypeSnap$).pipe(map(sizeType => this.get(dataConfig, strategy, sizeType)), distinctUntilChanged());
|
|
20
|
+
}
|
|
21
|
+
/** Generate rules based on strategies for data. */
|
|
22
|
+
generateRules(dataConfig, strategy = this.config.viewport.defaultDataMatchStrategy) {
|
|
23
|
+
return generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
ViewportDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataService, deps: [{ token: i1.ViewportService }, { token: UX_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27
|
+
ViewportDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataService, providedIn: "root" });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataService, decorators: [{
|
|
29
|
+
type: Injectable,
|
|
30
|
+
args: [{
|
|
31
|
+
providedIn: "root",
|
|
32
|
+
}]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: i1.ViewportService }, { type: undefined, decorators: [{
|
|
34
|
+
type: Inject,
|
|
35
|
+
args: [UX_CONFIG]
|
|
36
|
+
}] }]; } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sY0FBYyxDQUFDO0FBSXBELE9BQU8sRUFBRSxpQkFBaUIsRUFBaUQsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUseUNBQXlDLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7OztBQUtwRyxNQUFNLE9BQU8sbUJBQW1CO0lBRS9CLFlBQ1MsUUFBeUIsRUFDTixNQUFpQjtRQURwQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUNOLFdBQU0sR0FBTixNQUFNLENBQVc7SUFFN0MsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixHQUFHLENBQ0YsVUFBaUMsRUFDakMsV0FBc0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQ25GLFdBQWlDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO1FBRS9ELE9BQU8saUJBQWlCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLElBQUksQ0FBSSxVQUFpQyxFQUFFLFFBQW9DLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDL0YsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUM3RSxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFDNUQsb0JBQW9CLEVBQUUsQ0FDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsYUFBYSxDQUNaLFVBQWlDLEVBQ2pDLFdBQXNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHdCQUF3QjtRQUVuRixPQUFPLHlDQUF5QyxDQUMvQyxVQUFVLEVBQ1YsUUFBUSxFQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDekIsQ0FBQztJQUNILENBQUM7O2dIQXBDVyxtQkFBbUIsaURBSXRCLFNBQVM7b0hBSk4sbUJBQW1CLGNBRm5CLE1BQU07MkZBRU4sbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBS0UsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgVVhfQ09ORklHLCBVeE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XG5cbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi4vdmlld3BvcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgbWF0Y2hWaWV3cG9ydERhdGEsIFZpZXdwb3J0RGF0YUNvbmZpZywgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEtbWF0Y2hlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVWaWV3cG9ydFJ1bGVzUmFuZ2VGcm9tRGF0YU1hdGNoZXIsIFZpZXdwb3J0RGF0YVJ1bGUgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLnV0aWxzXCI7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0RGF0YVNlcnZpY2Uge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgdmlld3BvcnQ6IFZpZXdwb3J0U2VydmljZSxcblx0XHRASW5qZWN0KFVYX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFV4T3B0aW9ucyxcblx0KSB7XG5cdH1cblxuXHQvKiogR2V0IGRhdGEgZm9yIG1hdGNoLiAqL1xuXHRnZXQ8VD4oXG5cdFx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxuXHRcdHN0cmF0ZWd5OiBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5ID0gdGhpcy5jb25maWcudmlld3BvcnQuZGVmYXVsdERhdGFNYXRjaFN0cmF0ZWd5LFxuXHRcdHNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyA9IHRoaXMudmlld3BvcnQuc2l6ZVR5cGVTbmFwc2hvdFxuXHQpOiBUIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gbWF0Y2hWaWV3cG9ydERhdGEoZGF0YUNvbmZpZywgc2l6ZVR5cGUsIHN0cmF0ZWd5LCB0aGlzLnZpZXdwb3J0LnNpemVUeXBlcywgdGhpcy52aWV3cG9ydC5zaXplVHlwZU1hcCk7XG5cdH1cblxuXHQvKiogR2V0IGRhdGEgZm9yIG1hdGNoIGFzIG9ic2VydmFibGUuICovXG5cdGdldCQ8VD4oZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LCBzdHJhdGVneT86IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3ksIHRocm90dGxlID0gdHJ1ZSk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuXHRcdHJldHVybiAodGhyb3R0bGUgPyB0aGlzLnZpZXdwb3J0LnNpemVUeXBlJCA6IHRoaXMudmlld3BvcnQuc2l6ZVR5cGVTbmFwJCkucGlwZShcblx0XHRcdG1hcChzaXplVHlwZSA9PiB0aGlzLmdldDxUPihkYXRhQ29uZmlnLCBzdHJhdGVneSwgc2l6ZVR5cGUpKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG5cdFx0KTtcblx0fVxuXG5cdC8qKiBHZW5lcmF0ZSBydWxlcyBiYXNlZCBvbiBzdHJhdGVnaWVzIGZvciBkYXRhLiAqL1xuXHRnZW5lcmF0ZVJ1bGVzPFQ+KFxuXHRcdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcblx0XHRzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSA9IHRoaXMuY29uZmlnLnZpZXdwb3J0LmRlZmF1bHREYXRhTWF0Y2hTdHJhdGVneSxcblx0KTogVmlld3BvcnREYXRhUnVsZTxUPltdIHtcblx0XHRyZXR1cm4gZ2VuZXJhdGVWaWV3cG9ydFJ1bGVzUmFuZ2VGcm9tRGF0YU1hdGNoZXIoXG5cdFx0XHRkYXRhQ29uZmlnLFxuXHRcdFx0c3RyYXRlZ3ksXG5cdFx0XHR0aGlzLnZpZXdwb3J0LnNpemVUeXBlcyxcblx0XHRcdHRoaXMudmlld3BvcnQuc2l6ZVR5cGVNYXBcblx0XHQpO1xuXHR9XG5cbn1cbiJdfQ==
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
import { ViewportDataMatchStrategy } from "./viewport-data-matcher";
|
|
2
|
-
/**
|
|
3
|
-
* Utility function to generate rules based on strategies.
|
|
4
|
-
*
|
|
5
|
-
* @param dataConfig Data config to generate rules based on.
|
|
6
|
-
* @param strategy Strategy to use when building rules.
|
|
7
|
-
* @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)
|
|
8
|
-
* @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)
|
|
9
|
-
* @returns Returns a collection of rules (ordered).
|
|
10
|
-
*/
|
|
11
|
-
export function generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, sizeTypes, sizeTypeMap) {
|
|
12
|
-
const ruleBuilderFn = matchStrategyHandlerMap[strategy];
|
|
13
|
-
if (!ruleBuilderFn) {
|
|
14
|
-
throw Error(`generateViewportRulesRangeFromDataMatcher: Viewport Data strategy not implemented. Strategy: '${strategy}'`);
|
|
15
|
-
}
|
|
16
|
-
let dataSizes = [];
|
|
17
|
-
for (const key in dataConfig) {
|
|
18
|
-
if (Object.prototype.hasOwnProperty.call(dataConfig, key)) {
|
|
19
|
-
const data = dataConfig[key];
|
|
20
|
-
if (data === undefined) {
|
|
21
|
-
continue;
|
|
22
|
-
}
|
|
23
|
-
const size = sizeTypeMap[key];
|
|
24
|
-
if (size) {
|
|
25
|
-
dataSizes.push(size);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
dataSizes = dataSizes.sort(({ type: typeA }, { type: typeB }) => typeA - typeB);
|
|
30
|
-
const rules = [];
|
|
31
|
-
if (dataConfig.default) {
|
|
32
|
-
rules.push({ value: dataConfig.default, min: undefined, max: undefined });
|
|
33
|
-
}
|
|
34
|
-
let prevRule;
|
|
35
|
-
for (let index = 0; index < dataSizes.length; index++) {
|
|
36
|
-
const prevDataSize = dataSizes[index - 1];
|
|
37
|
-
const nextDataSize = dataSizes[index + 1];
|
|
38
|
-
const dataSize = dataSizes[index];
|
|
39
|
-
const prevSize = sizeTypes[dataSize.type - 1];
|
|
40
|
-
// const nextSize = sizeTypes[dataSize.type + 1];
|
|
41
|
-
const data = dataConfig[dataSize.name];
|
|
42
|
-
const rule = {
|
|
43
|
-
value: data,
|
|
44
|
-
min: undefined,
|
|
45
|
-
max: undefined,
|
|
46
|
-
};
|
|
47
|
-
ruleBuilderFn(rule, dataSize, nextDataSize, prevDataSize, prevSize, prevRule, sizeTypes);
|
|
48
|
-
prevRule = rule;
|
|
49
|
-
rules.push(rule);
|
|
50
|
-
}
|
|
51
|
-
return rules;
|
|
52
|
-
}
|
|
53
|
-
const matchStrategyHandlerMap = {
|
|
54
|
-
[ViewportDataMatchStrategy.exact]: (rule, dataSize, _nextDataSize, _prevDataSize, prevSize) => {
|
|
55
|
-
rule.max = dataSize.widthThreshold;
|
|
56
|
-
if (prevSize) {
|
|
57
|
-
rule.min = prevSize.widthThreshold + 1;
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
[ViewportDataMatchStrategy.smaller]: (rule, dataSize, nextDataSize, _prevDataSize, prevSize) => {
|
|
61
|
-
if (nextDataSize) {
|
|
62
|
-
rule.max = dataSize.widthThreshold;
|
|
63
|
-
}
|
|
64
|
-
if (prevSize) {
|
|
65
|
-
rule.min = prevSize.widthThreshold + 1;
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
[ViewportDataMatchStrategy.larger]: (rule, dataSize, _nextDataSize, prevDataSize) => {
|
|
69
|
-
if (dataSize) {
|
|
70
|
-
rule.max = dataSize.widthThreshold;
|
|
71
|
-
}
|
|
72
|
-
if (prevDataSize) {
|
|
73
|
-
rule.min = prevDataSize.widthThreshold + 1;
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
[ViewportDataMatchStrategy.closestSmallerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {
|
|
77
|
-
if (nextDataSize) {
|
|
78
|
-
rule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, true);
|
|
79
|
-
}
|
|
80
|
-
if (prevRule?.max) {
|
|
81
|
-
rule.min = prevRule.max + 1;
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
[ViewportDataMatchStrategy.closestLargerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {
|
|
85
|
-
if (nextDataSize) {
|
|
86
|
-
rule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, false);
|
|
87
|
-
}
|
|
88
|
-
if (prevRule?.max) {
|
|
89
|
-
rule.min = prevRule.max + 1;
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
function calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, isSmallerPreferred) {
|
|
94
|
-
const fn = isSmallerPreferred ? Math.ceil : Math.floor;
|
|
95
|
-
// get closest between curr and next
|
|
96
|
-
const diffIndex = fn((nextDataSize.type - dataSize.type - 1) / 2);
|
|
97
|
-
const diffNextSize = sizeTypes[dataSize.type + diffIndex];
|
|
98
|
-
return (diffNextSize || dataSize).widthThreshold;
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy92aWV3cG9ydC92aWV3cG9ydC1kYXRhL3ZpZXdwb3J0LWRhdGEudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFzQix5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUXhGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHlDQUF5QyxDQUN4RCxVQUFpQyxFQUNqQyxRQUFtQyxFQUNuQyxTQUFpQyxFQUNqQyxXQUE2QztJQUU3QyxNQUFNLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ25CLE1BQU0sS0FBSyxDQUFDLGlHQUFpRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0tBQzFIO0lBRUQsSUFBSSxTQUFTLEdBQTJCLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtRQUM3QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDdkIsU0FBUzthQUNUO1lBQ0QsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksSUFBSSxFQUFFO2dCQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckI7U0FDRDtLQUNEO0lBQ0QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFH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Q0FBQyxjQUFjLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tIFwiLi4vLi4vaW50ZXJuYWwvaW50ZXJuYWwubW9kZWxcIjtcclxuaW1wb3J0IHsgVmlld3BvcnRTaXplVHlwZUluZm8gfSBmcm9tIFwiLi4vdmlld3BvcnQubW9kZWxcIjtcclxuaW1wb3J0IHsgVmlld3BvcnREYXRhQ29uZmlnLCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5IH0gZnJvbSBcIi4vdmlld3BvcnQtZGF0YS1tYXRjaGVyXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0RGF0YVJ1bGU8VD4ge1xyXG5cdG1pbj86IG51bWJlcjtcclxuXHRtYXg/OiBudW1iZXI7XHJcblx0dmFsdWU6IFQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHJ1bGVzIGJhc2VkIG9uIHN0cmF0ZWdpZXMuXHJcbiAqXHJcbiAqIEBwYXJhbSBkYXRhQ29uZmlnIERhdGEgY29uZmlnIHRvIGdlbmVyYXRlIHJ1bGVzIGJhc2VkIG9uLlxyXG4gKiBAcGFyYW0gc3RyYXRlZ3kgU3RyYXRlZ3kgdG8gdXNlIHdoZW4gYnVpbGRpbmcgcnVsZXMuXHJcbiAqIEBwYXJhbSBzaXplVHlwZXMgQXZhaWxhYmxlIHNpemUgdHlwZXMgb3JkZXJlZCBieSBpbmRleCB0eXBlLiAoQ2FuIGJlIG9idGFpbmVkIGZyb20gYFZpZXdwb3J0U2VydmljZWApXHJcbiAqIEBwYXJhbSBzaXplVHlwZU1hcCBBdmFpbGFibGUgc2l6ZSB0eXBlIG1hcC4gKENhbiBiZSBvYnRhaW5lZCBmcm9tIGBWaWV3cG9ydFNlcnZpY2VgKVxyXG4gKiBAcmV0dXJucyBSZXR1cm5zIGEgY29sbGVjdGlvbiBvZiBydWxlcyAob3JkZXJlZCkuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVWaWV3cG9ydFJ1bGVzUmFuZ2VGcm9tRGF0YU1hdGNoZXI8VD4oXHJcblx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxyXG5cdHN0cmF0ZWd5OiBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LFxyXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcclxuXHRzaXplVHlwZU1hcDogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz4sXHJcbik6IFZpZXdwb3J0RGF0YVJ1bGU8VD5bXSB7XHJcblx0Y29uc3QgcnVsZUJ1aWxkZXJGbiA9IG1hdGNoU3RyYXRlZ3lIYW5kbGVyTWFwW3N0cmF0ZWd5XTtcclxuXHRpZiAoIXJ1bGVCdWlsZGVyRm4pIHtcclxuXHRcdHRocm93IEVycm9yKGBnZW5lcmF0ZVZpZXdwb3J0UnVsZXNSYW5nZUZyb21EYXRhTWF0Y2hlcjogVmlld3BvcnQgRGF0YSBzdHJhdGVneSBub3QgaW1wbGVtZW50ZWQuIFN0cmF0ZWd5OiAnJHtzdHJhdGVneX0nYCk7XHJcblx0fVxyXG5cclxuXHRsZXQgZGF0YVNpemVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdID0gW107XHJcblx0Zm9yIChjb25zdCBrZXkgaW4gZGF0YUNvbmZpZykge1xyXG5cdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhQ29uZmlnLCBrZXkpKSB7XHJcblx0XHRcdGNvbnN0IGRhdGEgPSBkYXRhQ29uZmlnW2tleV07XHJcblx0XHRcdGlmIChkYXRhID09PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjb25zdCBzaXplID0gc2l6ZVR5cGVNYXBba2V5XTtcclxuXHRcdFx0aWYgKHNpemUpIHtcclxuXHRcdFx0XHRkYXRhU2l6ZXMucHVzaChzaXplKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHRkYXRhU2l6ZXMgPSBkYXRhU2l6ZXMuc29ydCgoeyB0eXBlOiB0eXBlQSB9LCB7IHR5cGU6IHR5cGVCIH0pID0+IHR5cGVBIC0gdHlwZUIpO1xyXG5cclxuXHRjb25zdCBydWxlczogVmlld3BvcnREYXRhUnVsZTxUPltdID0gW107XHJcblx0aWYgKGRhdGFDb25maWcuZGVmYXVsdCkge1xyXG5cdFx0cnVsZXMucHVzaCh7IHZhbHVlOiBkYXRhQ29uZmlnLmRlZmF1bHQsIG1pbjogdW5kZWZpbmVkLCBtYXg6IHVuZGVmaW5lZCB9KTtcclxuXHR9XHJcblxyXG5cdGxldCBwcmV2UnVsZTogVmlld3BvcnREYXRhUnVsZTxUPiB8IHVuZGVmaW5lZDtcclxuXHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YVNpemVzLmxlbmd0aDsgaW5kZXgrKykge1xyXG5cdFx0Y29uc3QgcHJldkRhdGFTaXplID0gZGF0YVNpemVzW2luZGV4IC0gMV07XHJcblx0XHRjb25zdCBuZXh0RGF0YVNpemUgPSBkYXRhU2l6ZXNbaW5kZXggKyAxXTtcclxuXHRcdGNvbnN0IGRhdGFTaXplID0gZGF0YVNpemVzW2luZGV4XTtcclxuXHRcdGNvbnN0IHByZXZTaXplID0gc2l6ZVR5cGVzW2RhdGFTaXplLnR5cGUgLSAxXTtcclxuXHRcdC8vIGNvbnN0IG5leHRTaXplID0gc2l6ZVR5cGVzW2RhdGFTaXplLnR5cGUgKyAxXTtcclxuXHRcdGNvbnN0IGRhdGEgPSBkYXRhQ29uZmlnW2RhdGFTaXplLm5hbWVdO1xyXG5cdFx0Y29uc3QgcnVsZTogVmlld3BvcnREYXRhUnVsZTxUPiA9IHtcclxuXHRcdFx0dmFsdWU6IGRhdGEsXHJcblx0XHRcdG1pbjogdW5kZWZpbmVkLFxyXG5cdFx0XHRtYXg6IHVuZGVmaW5lZCxcclxuXHRcdH07XHJcblxyXG5cdFx0cnVsZUJ1aWxkZXJGbihydWxlLCBkYXRhU2l6ZSwgbmV4dERhdGFTaXplLCBwcmV2RGF0YVNpemUsIHByZXZTaXplLCBwcmV2UnVsZSwgc2l6ZVR5cGVzKTtcclxuXHJcblx0XHRwcmV2UnVsZSA9IHJ1bGU7XHJcblx0XHRydWxlcy5wdXNoKHJ1bGUpO1xyXG5cdH1cclxuXHRyZXR1cm4gcnVsZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRSdWxlUmFuZ2VCdWlsZGVyPFQgPSB1bmtub3duPiB7XHJcblx0KFxyXG5cdFx0cnVsZTogVmlld3BvcnREYXRhUnVsZTxUPixcclxuXHRcdGRhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRcdG5leHREYXRhU2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8gfCB1bmRlZmluZWQsXHJcblx0XHRwcmV2RGF0YVNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHwgdW5kZWZpbmVkLFxyXG5cdFx0cHJldlNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHwgdW5kZWZpbmVkLFxyXG5cdFx0cHJldlJ1bGU6IFZpZXdwb3J0RGF0YVJ1bGU8VD4gfCB1bmRlZmluZWQsXHJcblx0XHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXHJcblx0KTogdm9pZDtcclxufVxyXG5cclxuY29uc3QgbWF0Y2hTdHJhdGVneUhhbmRsZXJNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRSdWxlUmFuZ2VCdWlsZGVyPiA9IHtcclxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5leGFjdF06IChydWxlLCBkYXRhU2l6ZSwgX25leHREYXRhU2l6ZSwgX3ByZXZEYXRhU2l6ZSwgcHJldlNpemUpID0+IHtcclxuXHRcdHJ1bGUubWF4ID0gZGF0YVNpemUud2lkdGhUaHJlc2hvbGQ7XHJcblx0XHRpZiAocHJldlNpemUpIHtcclxuXHRcdFx0cnVsZS5taW4gPSBwcmV2U2l6ZS53aWR0aFRocmVzaG9sZCArIDE7XHJcblx0XHR9XHJcblx0fSxcclxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5zbWFsbGVyXTogKHJ1bGUsIGRhdGFTaXplLCBuZXh0RGF0YVNpemUsIF9wcmV2RGF0YVNpemUsIHByZXZTaXplKSA9PiB7XHJcblx0XHRpZiAobmV4dERhdGFTaXplKSB7XHJcblx0XHRcdHJ1bGUubWF4ID0gZGF0YVNpemUud2lkdGhUaHJlc2hvbGQ7XHJcblx0XHR9XHJcblx0XHRpZiAocHJldlNpemUpIHtcclxuXHRcdFx0cnVsZS5taW4gPSBwcmV2U2l6ZS53aWR0aFRocmVzaG9sZCArIDE7XHJcblx0XHR9XHJcblx0fSxcclxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5sYXJnZXJdOiAocnVsZSwgZGF0YVNpemUsIF9uZXh0RGF0YVNpemUsIHByZXZEYXRhU2l6ZSkgPT4ge1xyXG5cdFx0aWYgKGRhdGFTaXplKSB7XHJcblx0XHRcdHJ1bGUubWF4ID0gZGF0YVNpemUud2lkdGhUaHJlc2hvbGQ7XHJcblx0XHR9XHJcblx0XHRpZiAocHJldkRhdGFTaXplKSB7XHJcblx0XHRcdHJ1bGUubWluID0gcHJldkRhdGFTaXplLndpZHRoVGhyZXNob2xkICsgMTtcclxuXHRcdH1cclxuXHR9LFxyXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LmNsb3Nlc3RTbWFsbGVyRmlyc3RdOiAocnVsZSwgZGF0YVNpemUsIG5leHREYXRhU2l6ZSwgX3ByZXZEYXRhU2l6ZSwgX3ByZXZTaXplLCBwcmV2UnVsZSwgc2l6ZVR5cGVzKSA9PiB7XHJcblx0XHRpZiAobmV4dERhdGFTaXplKSB7XHJcblx0XHRcdHJ1bGUubWF4ID0gY2FsY3VsYXRlQ2xvc2VzdFdpZHRoVGhyZXNob2xkKG5leHREYXRhU2l6ZSwgZGF0YVNpemUsIHNpemVUeXBlcywgdHJ1ZSk7XHJcblx0XHR9XHJcblx0XHRpZiAocHJldlJ1bGU/Lm1heCkge1xyXG5cdFx0XHRydWxlLm1pbiA9IHByZXZSdWxlLm1heCArIDE7XHJcblx0XHR9XHJcblx0fSxcclxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5jbG9zZXN0TGFyZ2VyRmlyc3RdOiAocnVsZSwgZGF0YVNpemUsIG5leHREYXRhU2l6ZSwgX3ByZXZEYXRhU2l6ZSwgX3ByZXZTaXplLCBwcmV2UnVsZSwgc2l6ZVR5cGVzKSA9PiB7XHJcblx0XHRpZiAobmV4dERhdGFTaXplKSB7XHJcblx0XHRcdHJ1bGUubWF4ID0gY2FsY3VsYXRlQ2xvc2VzdFdpZHRoVGhyZXNob2xkKG5leHREYXRhU2l6ZSwgZGF0YVNpemUsIHNpemVUeXBlcywgZmFsc2UpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHByZXZSdWxlPy5tYXgpIHtcclxuXHRcdFx0cnVsZS5taW4gPSBwcmV2UnVsZS5tYXggKyAxO1xyXG5cdFx0fVxyXG5cdH0sXHJcbn07XHJcblxyXG5mdW5jdGlvbiBjYWxjdWxhdGVDbG9zZXN0V2lkdGhUaHJlc2hvbGQoXHJcblx0bmV4dERhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRkYXRhU2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8sXHJcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxyXG5cdGlzU21hbGxlclByZWZlcnJlZDogYm9vbGVhbixcclxuKSB7XHJcblx0Y29uc3QgZm4gPSBpc1NtYWxsZXJQcmVmZXJyZWQgPyBNYXRoLmNlaWwgOiBNYXRoLmZsb29yO1xyXG5cdC8vIGdldCBjbG9zZXN0IGJldHdlZW4gY3VyciBhbmQgbmV4dFxyXG5cdGNvbnN0IGRpZmZJbmRleCA9IGZuKChuZXh0RGF0YVNpemUudHlwZSAtIGRhdGFTaXplLnR5cGUgLSAxKSAvIDIpO1xyXG5cdGNvbnN0IGRpZmZOZXh0U2l6ZSA9IHNpemVUeXBlc1tkYXRhU2l6ZS50eXBlICsgZGlmZkluZGV4XTtcclxuXHRyZXR1cm4gKGRpZmZOZXh0U2l6ZSB8fCBkYXRhU2l6ZSkud2lkdGhUaHJlc2hvbGQ7XHJcbn1cclxuIl19
|
|
1
|
+
import { ViewportDataMatchStrategy } from "./viewport-data-matcher";
|
|
2
|
+
/**
|
|
3
|
+
* Utility function to generate rules based on strategies.
|
|
4
|
+
*
|
|
5
|
+
* @param dataConfig Data config to generate rules based on.
|
|
6
|
+
* @param strategy Strategy to use when building rules.
|
|
7
|
+
* @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)
|
|
8
|
+
* @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)
|
|
9
|
+
* @returns Returns a collection of rules (ordered).
|
|
10
|
+
*/
|
|
11
|
+
export function generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, sizeTypes, sizeTypeMap) {
|
|
12
|
+
const ruleBuilderFn = matchStrategyHandlerMap[strategy];
|
|
13
|
+
if (!ruleBuilderFn) {
|
|
14
|
+
throw Error(`generateViewportRulesRangeFromDataMatcher: Viewport Data strategy not implemented. Strategy: '${strategy}'`);
|
|
15
|
+
}
|
|
16
|
+
let dataSizes = [];
|
|
17
|
+
for (const key in dataConfig) {
|
|
18
|
+
if (Object.prototype.hasOwnProperty.call(dataConfig, key)) {
|
|
19
|
+
const data = dataConfig[key];
|
|
20
|
+
if (data === undefined) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const size = sizeTypeMap[key];
|
|
24
|
+
if (size) {
|
|
25
|
+
dataSizes.push(size);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
dataSizes = dataSizes.sort(({ type: typeA }, { type: typeB }) => typeA - typeB);
|
|
30
|
+
const rules = [];
|
|
31
|
+
if (dataConfig.default) {
|
|
32
|
+
rules.push({ value: dataConfig.default, min: undefined, max: undefined });
|
|
33
|
+
}
|
|
34
|
+
let prevRule;
|
|
35
|
+
for (let index = 0; index < dataSizes.length; index++) {
|
|
36
|
+
const prevDataSize = dataSizes[index - 1];
|
|
37
|
+
const nextDataSize = dataSizes[index + 1];
|
|
38
|
+
const dataSize = dataSizes[index];
|
|
39
|
+
const prevSize = sizeTypes[dataSize.type - 1];
|
|
40
|
+
// const nextSize = sizeTypes[dataSize.type + 1];
|
|
41
|
+
const data = dataConfig[dataSize.name];
|
|
42
|
+
const rule = {
|
|
43
|
+
value: data,
|
|
44
|
+
min: undefined,
|
|
45
|
+
max: undefined,
|
|
46
|
+
};
|
|
47
|
+
ruleBuilderFn(rule, dataSize, nextDataSize, prevDataSize, prevSize, prevRule, sizeTypes);
|
|
48
|
+
prevRule = rule;
|
|
49
|
+
rules.push(rule);
|
|
50
|
+
}
|
|
51
|
+
return rules;
|
|
52
|
+
}
|
|
53
|
+
const matchStrategyHandlerMap = {
|
|
54
|
+
[ViewportDataMatchStrategy.exact]: (rule, dataSize, _nextDataSize, _prevDataSize, prevSize) => {
|
|
55
|
+
rule.max = dataSize.widthThreshold;
|
|
56
|
+
if (prevSize) {
|
|
57
|
+
rule.min = prevSize.widthThreshold + 1;
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
[ViewportDataMatchStrategy.smaller]: (rule, dataSize, nextDataSize, _prevDataSize, prevSize) => {
|
|
61
|
+
if (nextDataSize) {
|
|
62
|
+
rule.max = dataSize.widthThreshold;
|
|
63
|
+
}
|
|
64
|
+
if (prevSize) {
|
|
65
|
+
rule.min = prevSize.widthThreshold + 1;
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
[ViewportDataMatchStrategy.larger]: (rule, dataSize, _nextDataSize, prevDataSize) => {
|
|
69
|
+
if (dataSize) {
|
|
70
|
+
rule.max = dataSize.widthThreshold;
|
|
71
|
+
}
|
|
72
|
+
if (prevDataSize) {
|
|
73
|
+
rule.min = prevDataSize.widthThreshold + 1;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
[ViewportDataMatchStrategy.closestSmallerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {
|
|
77
|
+
if (nextDataSize) {
|
|
78
|
+
rule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, true);
|
|
79
|
+
}
|
|
80
|
+
if (prevRule?.max) {
|
|
81
|
+
rule.min = prevRule.max + 1;
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
[ViewportDataMatchStrategy.closestLargerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {
|
|
85
|
+
if (nextDataSize) {
|
|
86
|
+
rule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, false);
|
|
87
|
+
}
|
|
88
|
+
if (prevRule?.max) {
|
|
89
|
+
rule.min = prevRule.max + 1;
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
function calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, isSmallerPreferred) {
|
|
94
|
+
const fn = isSmallerPreferred ? Math.ceil : Math.floor;
|
|
95
|
+
// get closest between curr and next
|
|
96
|
+
const diffIndex = fn((nextDataSize.type - dataSize.type - 1) / 2);
|
|
97
|
+
const diffNextSize = sizeTypes[dataSize.type + diffIndex];
|
|
98
|
+
return (diffNextSize || dataSize).widthThreshold;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy92aWV3cG9ydC92aWV3cG9ydC1kYXRhL3ZpZXdwb3J0LWRhdGEudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFzQix5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUXhGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHlDQUF5QyxDQUN4RCxVQUFpQyxFQUNqQyxRQUFtQyxFQUNuQyxTQUFpQyxFQUNqQyxXQUE2QztJQUU3QyxNQUFNLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ25CLE1BQU0sS0FBSyxDQUFDLGlHQUFpRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0tBQzFIO0lBRUQsSUFBSSxTQUFTLEdBQTJCLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtRQUM3QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDdkIsU0FBUzthQUNUO1lBQ0QsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksSUFBSSxFQUFFO2dCQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckI7U0FDRDtLQUNEO0lBQ0QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFH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Q0FBQyxjQUFjLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tIFwiLi4vLi4vaW50ZXJuYWwvaW50ZXJuYWwubW9kZWxcIjtcbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydERhdGFDb25maWcsIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLW1hdGNoZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydERhdGFSdWxlPFQ+IHtcblx0bWluPzogbnVtYmVyO1xuXHRtYXg/OiBudW1iZXI7XG5cdHZhbHVlOiBUO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgcnVsZXMgYmFzZWQgb24gc3RyYXRlZ2llcy5cbiAqXG4gKiBAcGFyYW0gZGF0YUNvbmZpZyBEYXRhIGNvbmZpZyB0byBnZW5lcmF0ZSBydWxlcyBiYXNlZCBvbi5cbiAqIEBwYXJhbSBzdHJhdGVneSBTdHJhdGVneSB0byB1c2Ugd2hlbiBidWlsZGluZyBydWxlcy5cbiAqIEBwYXJhbSBzaXplVHlwZXMgQXZhaWxhYmxlIHNpemUgdHlwZXMgb3JkZXJlZCBieSBpbmRleCB0eXBlLiAoQ2FuIGJlIG9idGFpbmVkIGZyb20gYFZpZXdwb3J0U2VydmljZWApXG4gKiBAcGFyYW0gc2l6ZVR5cGVNYXAgQXZhaWxhYmxlIHNpemUgdHlwZSBtYXAuIChDYW4gYmUgb2J0YWluZWQgZnJvbSBgVmlld3BvcnRTZXJ2aWNlYClcbiAqIEByZXR1cm5zIFJldHVybnMgYSBjb2xsZWN0aW9uIG9mIHJ1bGVzIChvcmRlcmVkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVmlld3BvcnRSdWxlc1JhbmdlRnJvbURhdGFNYXRjaGVyPFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdHN0cmF0ZWd5OiBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LFxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXG5cdHNpemVUeXBlTWFwOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPixcbik6IFZpZXdwb3J0RGF0YVJ1bGU8VD5bXSB7XG5cdGNvbnN0IHJ1bGVCdWlsZGVyRm4gPSBtYXRjaFN0cmF0ZWd5SGFuZGxlck1hcFtzdHJhdGVneV07XG5cdGlmICghcnVsZUJ1aWxkZXJGbikge1xuXHRcdHRocm93IEVycm9yKGBnZW5lcmF0ZVZpZXdwb3J0UnVsZXNSYW5nZUZyb21EYXRhTWF0Y2hlcjogVmlld3BvcnQgRGF0YSBzdHJhdGVneSBub3QgaW1wbGVtZW50ZWQuIFN0cmF0ZWd5OiAnJHtzdHJhdGVneX0nYCk7XG5cdH1cblxuXHRsZXQgZGF0YVNpemVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdID0gW107XG5cdGZvciAoY29uc3Qga2V5IGluIGRhdGFDb25maWcpIHtcblx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGFDb25maWcsIGtleSkpIHtcblx0XHRcdGNvbnN0IGRhdGEgPSBkYXRhQ29uZmlnW2tleV07XG5cdFx0XHRpZiAoZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc2l6ZSA9IHNpemVUeXBlTWFwW2tleV07XG5cdFx0XHRpZiAoc2l6ZSkge1xuXHRcdFx0XHRkYXRhU2l6ZXMucHVzaChzaXplKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0ZGF0YVNpemVzID0gZGF0YVNpemVzLnNvcnQoKHsgdHlwZTogdHlwZUEgfSwgeyB0eXBlOiB0eXBlQiB9KSA9PiB0eXBlQSAtIHR5cGVCKTtcblxuXHRjb25zdCBydWxlczogVmlld3BvcnREYXRhUnVsZTxUPltdID0gW107XG5cdGlmIChkYXRhQ29uZmlnLmRlZmF1bHQpIHtcblx0XHRydWxlcy5wdXNoKHsgdmFsdWU6IGRhdGFDb25maWcuZGVmYXVsdCwgbWluOiB1bmRlZmluZWQsIG1heDogdW5kZWZpbmVkIH0pO1xuXHR9XG5cblx0bGV0IHByZXZSdWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+IHwgdW5kZWZpbmVkO1xuXHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YVNpemVzLmxlbmd0aDsgaW5kZXgrKykge1xuXHRcdGNvbnN0IHByZXZEYXRhU2l6ZSA9IGRhdGFTaXplc1tpbmRleCAtIDFdO1xuXHRcdGNvbnN0IG5leHREYXRhU2l6ZSA9IGRhdGFTaXplc1tpbmRleCArIDFdO1xuXHRcdGNvbnN0IGRhdGFTaXplID0gZGF0YVNpemVzW2luZGV4XTtcblx0XHRjb25zdCBwcmV2U2l6ZSA9IHNpemVUeXBlc1tkYXRhU2l6ZS50eXBlIC0gMV07XG5cdFx0Ly8gY29uc3QgbmV4dFNpemUgPSBzaXplVHlwZXNbZGF0YVNpemUudHlwZSArIDFdO1xuXHRcdGNvbnN0IGRhdGEgPSBkYXRhQ29uZmlnW2RhdGFTaXplLm5hbWVdO1xuXHRcdGNvbnN0IHJ1bGU6IFZpZXdwb3J0RGF0YVJ1bGU8VD4gPSB7XG5cdFx0XHR2YWx1ZTogZGF0YSxcblx0XHRcdG1pbjogdW5kZWZpbmVkLFxuXHRcdFx0bWF4OiB1bmRlZmluZWQsXG5cdFx0fTtcblxuXHRcdHJ1bGVCdWlsZGVyRm4ocnVsZSwgZGF0YVNpemUsIG5leHREYXRhU2l6ZSwgcHJldkRhdGFTaXplLCBwcmV2U2l6ZSwgcHJldlJ1bGUsIHNpemVUeXBlcyk7XG5cblx0XHRwcmV2UnVsZSA9IHJ1bGU7XG5cdFx0cnVsZXMucHVzaChydWxlKTtcblx0fVxuXHRyZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRSdWxlUmFuZ2VCdWlsZGVyPFQgPSB1bmtub3duPiB7XG5cdChcblx0XHRydWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+LFxuXHRcdGRhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0XHRuZXh0RGF0YVNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHwgdW5kZWZpbmVkLFxuXHRcdHByZXZEYXRhU2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8gfCB1bmRlZmluZWQsXG5cdFx0cHJldlNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHwgdW5kZWZpbmVkLFxuXHRcdHByZXZSdWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+IHwgdW5kZWZpbmVkLFxuXHRcdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcblx0KTogdm9pZDtcbn1cblxuY29uc3QgbWF0Y2hTdHJhdGVneUhhbmRsZXJNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRSdWxlUmFuZ2VCdWlsZGVyPiA9IHtcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuZXhhY3RdOiAocnVsZSwgZGF0YVNpemUsIF9uZXh0RGF0YVNpemUsIF9wcmV2RGF0YVNpemUsIHByZXZTaXplKSA9PiB7XG5cdFx0cnVsZS5tYXggPSBkYXRhU2l6ZS53aWR0aFRocmVzaG9sZDtcblx0XHRpZiAocHJldlNpemUpIHtcblx0XHRcdHJ1bGUubWluID0gcHJldlNpemUud2lkdGhUaHJlc2hvbGQgKyAxO1xuXHRcdH1cblx0fSxcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuc21hbGxlcl06IChydWxlLCBkYXRhU2l6ZSwgbmV4dERhdGFTaXplLCBfcHJldkRhdGFTaXplLCBwcmV2U2l6ZSkgPT4ge1xuXHRcdGlmIChuZXh0RGF0YVNpemUpIHtcblx0XHRcdHJ1bGUubWF4ID0gZGF0YVNpemUud2lkdGhUaHJlc2hvbGQ7XG5cdFx0fVxuXHRcdGlmIChwcmV2U2l6ZSkge1xuXHRcdFx0cnVsZS5taW4gPSBwcmV2U2l6ZS53aWR0aFRocmVzaG9sZCArIDE7XG5cdFx0fVxuXHR9LFxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5sYXJnZXJdOiAocnVsZSwgZGF0YVNpemUsIF9uZXh0RGF0YVNpemUsIHByZXZEYXRhU2l6ZSkgPT4ge1xuXHRcdGlmIChkYXRhU2l6ZSkge1xuXHRcdFx0cnVsZS5tYXggPSBkYXRhU2l6ZS53aWR0aFRocmVzaG9sZDtcblx0XHR9XG5cdFx0aWYgKHByZXZEYXRhU2l6ZSkge1xuXHRcdFx0cnVsZS5taW4gPSBwcmV2RGF0YVNpemUud2lkdGhUaHJlc2hvbGQgKyAxO1xuXHRcdH1cblx0fSxcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuY2xvc2VzdFNtYWxsZXJGaXJzdF06IChydWxlLCBkYXRhU2l6ZSwgbmV4dERhdGFTaXplLCBfcHJldkRhdGFTaXplLCBfcHJldlNpemUsIHByZXZSdWxlLCBzaXplVHlwZXMpID0+IHtcblx0XHRpZiAobmV4dERhdGFTaXplKSB7XG5cdFx0XHRydWxlLm1heCA9IGNhbGN1bGF0ZUNsb3Nlc3RXaWR0aFRocmVzaG9sZChuZXh0RGF0YVNpemUsIGRhdGFTaXplLCBzaXplVHlwZXMsIHRydWUpO1xuXHRcdH1cblx0XHRpZiAocHJldlJ1bGU/Lm1heCkge1xuXHRcdFx0cnVsZS5taW4gPSBwcmV2UnVsZS5tYXggKyAxO1xuXHRcdH1cblx0fSxcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuY2xvc2VzdExhcmdlckZpcnN0XTogKHJ1bGUsIGRhdGFTaXplLCBuZXh0RGF0YVNpemUsIF9wcmV2RGF0YVNpemUsIF9wcmV2U2l6ZSwgcHJldlJ1bGUsIHNpemVUeXBlcykgPT4ge1xuXHRcdGlmIChuZXh0RGF0YVNpemUpIHtcblx0XHRcdHJ1bGUubWF4ID0gY2FsY3VsYXRlQ2xvc2VzdFdpZHRoVGhyZXNob2xkKG5leHREYXRhU2l6ZSwgZGF0YVNpemUsIHNpemVUeXBlcywgZmFsc2UpO1xuXHRcdH1cblx0XHRpZiAocHJldlJ1bGU/Lm1heCkge1xuXHRcdFx0cnVsZS5taW4gPSBwcmV2UnVsZS5tYXggKyAxO1xuXHRcdH1cblx0fSxcbn07XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUNsb3Nlc3RXaWR0aFRocmVzaG9sZChcblx0bmV4dERhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0ZGF0YVNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXG5cdGlzU21hbGxlclByZWZlcnJlZDogYm9vbGVhbixcbikge1xuXHRjb25zdCBmbiA9IGlzU21hbGxlclByZWZlcnJlZCA/IE1hdGguY2VpbCA6IE1hdGguZmxvb3I7XG5cdC8vIGdldCBjbG9zZXN0IGJldHdlZW4gY3VyciBhbmQgbmV4dFxuXHRjb25zdCBkaWZmSW5kZXggPSBmbigobmV4dERhdGFTaXplLnR5cGUgLSBkYXRhU2l6ZS50eXBlIC0gMSkgLyAyKTtcblx0Y29uc3QgZGlmZk5leHRTaXplID0gc2l6ZVR5cGVzW2RhdGFTaXplLnR5cGUgKyBkaWZmSW5kZXhdO1xuXHRyZXR1cm4gKGRpZmZOZXh0U2l6ZSB8fCBkYXRhU2l6ZSkud2lkdGhUaHJlc2hvbGQ7XG59XG4iXX0=
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import { Directive, Input, } from "@angular/core";
|
|
2
|
-
import { combineLatest, ReplaySubject, Subject } from "rxjs";
|
|
3
|
-
import { tap, map, takeUntil } from "rxjs/operators";
|
|
4
|
-
import { isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, isViewportConditionMatch } from "./viewport.util";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./viewport.service";
|
|
7
|
-
const NAME_CAMEL = "ssvViewportMatcherVar";
|
|
8
|
-
export class SsvViewportMatcherVarContext {
|
|
9
|
-
constructor($implicit = false) {
|
|
10
|
-
this.$implicit = $implicit;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export class SsvViewportMatcherVarDirective {
|
|
14
|
-
constructor(viewport, viewContainer, templateRef) {
|
|
15
|
-
this.viewport = viewport;
|
|
16
|
-
this.viewContainer = viewContainer;
|
|
17
|
-
this.templateRef = templateRef;
|
|
18
|
-
this._matchConditions = {};
|
|
19
|
-
this._context = new SsvViewportMatcherVarContext();
|
|
20
|
-
this._destroy$ = new Subject();
|
|
21
|
-
this._update$ = new ReplaySubject(1);
|
|
22
|
-
}
|
|
23
|
-
set condition(value) {
|
|
24
|
-
if (isViewportSizeMatcherExpression(value)) {
|
|
25
|
-
this._matchConditions.expression = value;
|
|
26
|
-
}
|
|
27
|
-
else if (isViewportSizeMatcherTupleExpression(value)) {
|
|
28
|
-
const [op, size] = value;
|
|
29
|
-
this._matchConditions.expression = {
|
|
30
|
-
operation: op,
|
|
31
|
-
size
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
this._matchConditions.sizeType = value;
|
|
36
|
-
}
|
|
37
|
-
this._update$.next();
|
|
38
|
-
}
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
this.updateView();
|
|
41
|
-
combineLatest([this.viewport.sizeType$, this._update$]).pipe(map(([sizeType]) => isViewportConditionMatch(sizeType, this._matchConditions, this.viewport.sizeTypeMap)), tap(x => this._context.$implicit = x), tap(() => this._viewRef.markForCheck()), takeUntil(this._destroy$)).subscribe();
|
|
42
|
-
}
|
|
43
|
-
ngOnDestroy() {
|
|
44
|
-
this._destroy$.next();
|
|
45
|
-
this._destroy$.complete();
|
|
46
|
-
}
|
|
47
|
-
updateView() {
|
|
48
|
-
this.viewContainer.clear();
|
|
49
|
-
this._viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this._context);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
SsvViewportMatcherVarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SsvViewportMatcherVarDirective, deps: [{ token: i1.ViewportService }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
53
|
-
SsvViewportMatcherVarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SsvViewportMatcherVarDirective, selector: "[ssvViewportMatcherVar]", inputs: { condition: ["ssvViewportMatcherVarWhen", "condition"] }, ngImport: i0 });
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SsvViewportMatcherVarDirective, decorators: [{
|
|
55
|
-
type: Directive,
|
|
56
|
-
args: [{
|
|
57
|
-
selector: `[${NAME_CAMEL}]`,
|
|
58
|
-
}]
|
|
59
|
-
}], ctorParameters: function () { return [{ type: i1.ViewportService }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { condition: [{
|
|
60
|
-
type: Input,
|
|
61
|
-
args: [`${NAME_CAMEL}When`]
|
|
62
|
-
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive, Input, } from "@angular/core";
|
|
2
|
+
import { combineLatest, ReplaySubject, Subject } from "rxjs";
|
|
3
|
+
import { tap, map, takeUntil } from "rxjs/operators";
|
|
4
|
+
import { isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, isViewportConditionMatch } from "./viewport.util";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./viewport.service";
|
|
7
|
+
const NAME_CAMEL = "ssvViewportMatcherVar";
|
|
8
|
+
export class SsvViewportMatcherVarContext {
|
|
9
|
+
constructor($implicit = false) {
|
|
10
|
+
this.$implicit = $implicit;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class SsvViewportMatcherVarDirective {
|
|
14
|
+
constructor(viewport, viewContainer, templateRef) {
|
|
15
|
+
this.viewport = viewport;
|
|
16
|
+
this.viewContainer = viewContainer;
|
|
17
|
+
this.templateRef = templateRef;
|
|
18
|
+
this._matchConditions = {};
|
|
19
|
+
this._context = new SsvViewportMatcherVarContext();
|
|
20
|
+
this._destroy$ = new Subject();
|
|
21
|
+
this._update$ = new ReplaySubject(1);
|
|
22
|
+
}
|
|
23
|
+
set condition(value) {
|
|
24
|
+
if (isViewportSizeMatcherExpression(value)) {
|
|
25
|
+
this._matchConditions.expression = value;
|
|
26
|
+
}
|
|
27
|
+
else if (isViewportSizeMatcherTupleExpression(value)) {
|
|
28
|
+
const [op, size] = value;
|
|
29
|
+
this._matchConditions.expression = {
|
|
30
|
+
operation: op,
|
|
31
|
+
size
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this._matchConditions.sizeType = value;
|
|
36
|
+
}
|
|
37
|
+
this._update$.next();
|
|
38
|
+
}
|
|
39
|
+
ngOnInit() {
|
|
40
|
+
this.updateView();
|
|
41
|
+
combineLatest([this.viewport.sizeType$, this._update$]).pipe(map(([sizeType]) => isViewportConditionMatch(sizeType, this._matchConditions, this.viewport.sizeTypeMap)), tap(x => this._context.$implicit = x), tap(() => this._viewRef.markForCheck()), takeUntil(this._destroy$)).subscribe();
|
|
42
|
+
}
|
|
43
|
+
ngOnDestroy() {
|
|
44
|
+
this._destroy$.next();
|
|
45
|
+
this._destroy$.complete();
|
|
46
|
+
}
|
|
47
|
+
updateView() {
|
|
48
|
+
this.viewContainer.clear();
|
|
49
|
+
this._viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this._context);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
SsvViewportMatcherVarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SsvViewportMatcherVarDirective, deps: [{ token: i1.ViewportService }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
53
|
+
SsvViewportMatcherVarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SsvViewportMatcherVarDirective, selector: "[ssvViewportMatcherVar]", inputs: { condition: ["ssvViewportMatcherVarWhen", "condition"] }, ngImport: i0 });
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SsvViewportMatcherVarDirective, decorators: [{
|
|
55
|
+
type: Directive,
|
|
56
|
+
args: [{
|
|
57
|
+
selector: `[${NAME_CAMEL}]`,
|
|
58
|
+
}]
|
|
59
|
+
}], ctorParameters: function () { return [{ type: i1.ViewportService }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { condition: [{
|
|
60
|
+
type: Input,
|
|
61
|
+
args: [`${NAME_CAMEL}When`]
|
|
62
|
+
}] } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtbWF0Y2hlci12YXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LW1hdGNoZXItdmFyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR04sU0FBUyxFQUNULEtBQUssR0FJTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckQsT0FBTyxFQUNOLCtCQUErQixFQUMvQixvQ0FBb0MsRUFDcEMsd0JBQXdCLEVBQ3hCLE1BQU0saUJBQWlCLENBQUM7OztBQUd6QixNQUFNLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQztBQUUzQyxNQUFNLE9BQU8sNEJBQTRCO0lBRXhDLFlBQ1EsWUFBWSxLQUFLO1FBQWpCLGNBQVMsR0FBVCxTQUFTLENBQVE7SUFDckIsQ0FBQztDQUVMO0FBS0QsTUFBTSxPQUFPLDhCQUE4QjtJQXdCMUMsWUFDUyxRQUF5QixFQUN6QixhQUErQixFQUMvQixXQUFzRDtRQUZ0RCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQTJDO1FBekJ2RCxxQkFBZ0IsR0FBNEIsRUFBRSxDQUFDO1FBQy9DLGFBQVEsR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7UUFDckMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFPLENBQUMsQ0FBQyxDQUFDO0lBd0J2RCxDQUFDO0lBckJELElBQWdDLFNBQVMsQ0FBQyxLQUF3RDtRQUNqRyxJQUFJLCtCQUErQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxvQ0FBb0MsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RCxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHO2dCQUNsQyxTQUFTLEVBQUUsRUFBRTtnQkFDYixJQUFJO2FBQ0osQ0FBQztTQUNGO2FBQU07WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQVNELFFBQVE7UUFDUCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRCxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDekcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQ3ZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ3pCLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sVUFBVTtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RixDQUFDOzsySEFqRFcsOEJBQThCOytHQUE5Qiw4QkFBOEI7MkZBQTlCLDhCQUE4QjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsSUFBSSxVQUFVLEdBQUc7aUJBQzNCOytKQVNnQyxTQUFTO3NCQUF4QyxLQUFLO3VCQUFDLEdBQUcsVUFBVSxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0T25Jbml0LFxuXHRPbkRlc3Ryb3ksXG5cdERpcmVjdGl2ZSxcblx0SW5wdXQsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRFbWJlZGRlZFZpZXdSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRhcCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld3BvcnQuc2VydmljZVwiO1xuaW1wb3J0IHtcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbixcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uLFxuXHRpc1ZpZXdwb3J0Q29uZGl0aW9uTWF0Y2hcbn0gZnJvbSBcIi4vdmlld3BvcnQudXRpbFwiO1xuaW1wb3J0IHsgVmlld3BvcnRNYXRjaENvbmRpdGlvbnMsIFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcblxuY29uc3QgTkFNRV9DQU1FTCA9IFwic3N2Vmlld3BvcnRNYXRjaGVyVmFyXCI7XG5cbmV4cG9ydCBjbGFzcyBTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0IHtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwdWJsaWMgJGltcGxpY2l0ID0gZmFsc2UsXG5cdCkgeyB9XG5cbn1cblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiBgWyR7TkFNRV9DQU1FTH1dYCxcbn0pXG5leHBvcnQgY2xhc3MgU3N2Vmlld3BvcnRNYXRjaGVyVmFyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG5cdHByaXZhdGUgX21hdGNoQ29uZGl0aW9uczogVmlld3BvcnRNYXRjaENvbmRpdGlvbnMgPSB7fTtcblx0cHJpdmF0ZSBfY29udGV4dCA9IG5ldyBTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfdXBkYXRlJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuXHRwcml2YXRlIF92aWV3UmVmITogRW1iZWRkZWRWaWV3UmVmPFNzdlZpZXdwb3J0TWF0Y2hlclZhckNvbnRleHQ+O1xuXG5cdEBJbnB1dChgJHtOQU1FX0NBTUVMfVdoZW5gKSBzZXQgY29uZGl0aW9uKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uKSB7XG5cdFx0aWYgKGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24odmFsdWUpKSB7XG5cdFx0XHR0aGlzLl9tYXRjaENvbmRpdGlvbnMuZXhwcmVzc2lvbiA9IHZhbHVlO1xuXHRcdH0gZWxzZSBpZiAoaXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uKHZhbHVlKSkge1xuXHRcdFx0Y29uc3QgW29wLCBzaXplXSA9IHZhbHVlO1xuXHRcdFx0dGhpcy5fbWF0Y2hDb25kaXRpb25zLmV4cHJlc3Npb24gPSB7XG5cdFx0XHRcdG9wZXJhdGlvbjogb3AsXG5cdFx0XHRcdHNpemVcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX21hdGNoQ29uZGl0aW9ucy5zaXplVHlwZSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdHRoaXMuX3VwZGF0ZSQubmV4dCgpO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSB2aWV3cG9ydDogVmlld3BvcnRTZXJ2aWNlLFxuXHRcdHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcblx0XHRwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0Pixcblx0KSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnVwZGF0ZVZpZXcoKTtcblx0XHRjb21iaW5lTGF0ZXN0KFt0aGlzLnZpZXdwb3J0LnNpemVUeXBlJCwgdGhpcy5fdXBkYXRlJF0pLnBpcGUoXG5cdFx0XHRtYXAoKFtzaXplVHlwZV0pID0+IGlzVmlld3BvcnRDb25kaXRpb25NYXRjaChzaXplVHlwZSwgdGhpcy5fbWF0Y2hDb25kaXRpb25zLCB0aGlzLnZpZXdwb3J0LnNpemVUeXBlTWFwKSksXG5cdFx0XHR0YXAoeCA9PiB0aGlzLl9jb250ZXh0LiRpbXBsaWNpdCA9IHgpLFxuXHRcdFx0dGFwKCgpID0+IHRoaXMuX3ZpZXdSZWYubWFya0ZvckNoZWNrKCkpLFxuXHRcdFx0dGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcblx0XHQpLnN1YnNjcmliZSgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5fZGVzdHJveSQubmV4dCgpO1xuXHRcdHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVZpZXcoKTogdm9pZCB7XG5cdFx0dGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG5cdFx0dGhpcy5fdmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgdGhpcy5fY29udGV4dCk7XG5cdH1cblxufVxuIl19
|