@ssv/ngx.ux 2.0.2 → 2.1.0-dev.9
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 +297 -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 +18 -18
- package/esm2020/viewport/viewport.model.mjs +31 -31
- package/esm2020/viewport/viewport.service.mjs +66 -67
- package/esm2020/viewport/viewport.util.mjs +117 -117
- package/fesm2015/ssv-ngx.ux.mjs +789 -790
- package/fesm2015/ssv-ngx.ux.mjs.map +1 -1
- package/fesm2020/ssv-ngx.ux.mjs +783 -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 +57 -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,67 +1,66 @@
|
|
|
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 { generateViewportSizeTypeInfoList, generateViewportSizeTypeInfoRefs, getSizeTypeInfo } from "./viewport.util";
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../platform/window";
|
|
8
|
-
import * as i2 from "./viewport-server-size.service";
|
|
9
|
-
export class ViewportService {
|
|
10
|
-
constructor(windowRef, viewportServerSize, config) {
|
|
11
|
-
this.windowRef = windowRef;
|
|
12
|
-
this.viewportServerSize = viewportServerSize;
|
|
13
|
-
|
|
14
|
-
this.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
this.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
this.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
ViewportService.ɵ
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3cG9ydC92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFDTixHQUFHLEVBQ0gsR0FBRyxFQUNILG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEdBQ1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQWEsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSWpELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQU10SCxNQUFNLE9BQU8sZUFBZTtJQWlDM0IsWUFDUyxTQUFvQixFQUNwQixrQkFBNkMsRUFDbEMsTUFBaUI7UUFGNUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTJCO1FBR3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdEUsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFRLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxF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LEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQ2pFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVk7YUFDbkUsQ0FBQztTQUNGO1FBRUQsT0FBTztZQUNOLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQ3ZDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXO1NBQ3pDLENBQUM7SUFDSCxDQUFDOzs0R0FqR1csZUFBZSxvRkFvQ2xCLFNBQVM7Z0hBcENOLGVBQWUsY0FGZixNQUFNOzJGQUVOLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFxQ0UsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50LCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcblx0bWFwLFxyXG5cdHRhcCxcclxuXHRkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuXHRzdGFydFdpdGgsXHJcblx0c2hhcmUsXHJcblx0c2hhcmVSZXBsYXksXHJcblx0YXVkaXRUaW1lLFxyXG59IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHsgVXhPcHRpb25zLCBVWF9DT05GSUcgfSBmcm9tIFwiLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLCBWaWV3cG9ydFNpemUgfSBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tIFwiLi4vcGxhdGZvcm0vd2luZG93XCI7XHJcbmltcG9ydCB7IFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC1zZXJ2ZXItc2l6ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZUluZm9MaXN0LCBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvUmVmcywgZ2V0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4vdmlld3BvcnQudXRpbFwiO1xyXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uL2ludGVybmFsL2ludGVybmFsLm1vZGVsXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2Uge1xyXG5cclxuXHQvKiogV2luZG93IHJlc2l6ZSBvYnNlcnZhYmxlLiAqL1xyXG5cdHJlYWRvbmx5IHJlc2l6ZVNuYXAkOiBPYnNlcnZhYmxlPFZpZXdwb3J0U2l6ZT47XHJcblxyXG5cdC8qKiBXaW5kb3cgcmVzaXplIG9ic2VydmFibGUgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cclxuXHRyZWFkb25seSByZXNpemUkOiBPYnNlcnZhYmxlPFZpZXdwb3J0U2l6ZT47XHJcblxyXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGUgb2JzZXJ2YWJsZSAod2hpY2ggaXMgYWxzbyB0aHJvdHRsZWQpLiAqL1xyXG5cdHJlYWRvbmx5IHNpemVUeXBlJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemVUeXBlSW5mbz47XHJcblxyXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGUgb2JzZXJ2YWJsZS4gKi9cclxuXHRyZWFkb25seSBzaXplVHlwZVNuYXAkOiBPYnNlcnZhYmxlPFZpZXdwb3J0U2l6ZVR5cGVJbmZvPjtcclxuXHJcblx0LyoqIFZpZXdwb3J0IHNpemUgdHlwZSBzbmFwc2hvdCBvZiB0aGUgbGFzdCB2YWx1ZS4gKFByZWZlciB1c2UgYHNpemVUeXBlJGAgb2JzZXJ2YWJsZSB3aGVuIHBvc3NpYmxlLikgKi9cclxuXHRnZXQgc2l6ZVR5cGVTbmFwc2hvdCgpOiBWaWV3cG9ydFNpemVUeXBlSW5mbyB7IHJldHVybiB0aGlzLl9zaXplVHlwZVNuYXBzaG90OyB9XHJcblxyXG5cdC8qKiBWaWV3cG9ydCBzaXplIG9ic2VydmFibGUgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cclxuXHRyZWFkb25seSBzaXplJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+O1xyXG5cclxuXHQvKiogVmlld3BvcnQgc2l6ZSBvYnNlcnZhYmxlLiAqL1xyXG5cdHJlYWRvbmx5IHNpemVTbmFwJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+O1xyXG5cclxuXHQvKiogU2l6ZSB0eXBlcyByZWZzIG9mIHRoZSBnZW5lcmF0ZWQgdmlld3BvcnQgc2l6ZSB0eXBlIGluZm8uICovXHJcblx0Z2V0IHNpemVUeXBlTWFwKCk6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+IHsgcmV0dXJuIHRoaXMuX3NpemVUeXBlTWFwOyB9XHJcblxyXG5cdC8qKiBWaWV3cG9ydCBzaXplIHR5cGVzIGxpc3Qgb3JkZXJlZCBieSB0eXBlLCBzbWFsbGVzdCB0byBsYXJnZXN0LiAqL1xyXG5cdGdldCBzaXplVHlwZXMoKTogVmlld3BvcnRTaXplVHlwZUluZm9bXSB7IHJldHVybiB0aGlzLl9zaXplVHlwZXM7IH1cclxuXHJcblx0cHJpdmF0ZSBfc2l6ZVR5cGVNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+O1xyXG5cdHByaXZhdGUgX3NpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXTtcclxuXHRwcml2YXRlIF9zaXplVHlwZVNuYXBzaG90OiBWaWV3cG9ydFNpemVUeXBlSW5mbztcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxyXG5cdFx0cHJpdmF0ZSB2aWV3cG9ydFNlcnZlclNpemU6IFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UsXHJcblx0XHRASW5qZWN0KFVYX0NPTkZJRykgY29uZmlnOiBVeE9wdGlvbnMsXHJcblx0KSB7XHJcblx0XHRjb25zb2xlLndhcm4oXCI+Pj4+IHlvbG8gc2VydmljZVwiKTtcclxuXHRcdHRoaXMuX3NpemVUeXBlcyA9IGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZUluZm9MaXN0KGNvbmZpZy52aWV3cG9ydC5icmVha3BvaW50cyk7XHJcblx0XHR0aGlzLl9zaXplVHlwZU1hcCA9IGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZUluZm9SZWZzKHRoaXMuX3NpemVUeXBlcyk7XHJcblxyXG5cdFx0aWYgKHdpbmRvd1JlZi5oYXNOYXRpdmUpIHtcclxuXHRcdFx0dGhpcy5yZXNpemVTbmFwJCA9IGZyb21FdmVudDxFdmVudD4od2luZG93LCBcInJlc2l6ZVwiKS5waXBlKFxyXG5cdFx0XHRcdG1hcCgoKSA9PiB0aGlzLmdldFZpZXdwb3J0U2l6ZSgpKSxcclxuXHRcdFx0XHRzaGFyZSgpXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHR0aGlzLnJlc2l6ZSQgPSB0aGlzLnJlc2l6ZVNuYXAkLnBpcGUoXHJcblx0XHRcdFx0YXVkaXRUaW1lKGNvbmZpZy52aWV3cG9ydC5yZXNpemVQb2xsaW5nU3BlZWQpLFxyXG5cdFx0XHRcdHNoYXJlKCksXHJcblx0XHRcdCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnJlc2l6ZVNuYXAkID0gdGhpcy5yZXNpemUkID0gb2Yodmlld3BvcnRTZXJ2ZXJTaXplLmdldCgpKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHNpemUgPSB0aGlzLmdldFZpZXdwb3J0U2l6ZSgpO1xyXG5cdFx0dGhpcy5fc2l6ZVR5cGVTbmFwc2hvdCA9IGdldFNpemVUeXBlSW5mbyhzaXplLndpZHRoLCB0aGlzLnNpemVUeXBlcyk7XHJcblxyXG5cdFx0Y29uc3Qgc2l6ZUZuID0gKG9icyQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPikgPT4gb2JzJC5waXBlKFxyXG5cdFx0XHRzdGFydFdpdGgoc2l6ZSksXHJcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodCksXHJcblx0XHRcdHNoYXJlUmVwbGF5KDEpLFxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnNpemVTbmFwJCA9IHNpemVGbih0aGlzLnJlc2l6ZVNuYXAkKTtcclxuXHRcdHRoaXMuc2l6ZSQgPSBzaXplRm4odGhpcy5yZXNpemUkKTtcclxuXHJcblx0XHRjb25zdCBzaXplVHlwZUZuID0gKG9icyQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPikgPT4gb2JzJC5waXBlKFxyXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS53aWR0aCA9PT0gYi53aWR0aCksXHJcblx0XHRcdG1hcCh4ID0+IGdldFNpemVUeXBlSW5mbyh4LndpZHRoLCB0aGlzLnNpemVUeXBlcykpLFxyXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG5cdFx0XHR0YXAoeCA9PiB0aGlzLl9zaXplVHlwZVNuYXBzaG90ID0geCksXHJcblx0XHRcdHNoYXJlUmVwbGF5KDEpLFxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnNpemVUeXBlJCA9IHNpemVUeXBlRm4odGhpcy5zaXplJCk7XHJcblx0XHR0aGlzLnNpemVUeXBlU25hcCQgPSBzaXplVHlwZUZuKHRoaXMuc2l6ZVNuYXAkKTtcclxuXHR9XHJcblxyXG5cdC8qKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZpZXdwb3J0IHNpemUgKi9cclxuXHRwcml2YXRlIGdldFZpZXdwb3J0U2l6ZSgpOiBWaWV3cG9ydFNpemUge1xyXG5cdFx0aWYgKCF0aGlzLndpbmRvd1JlZi5oYXNOYXRpdmUpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudmlld3BvcnRTZXJ2ZXJTaXplLmdldCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0aWYgKHVhLmluZGV4T2YoXCJzYWZhcmlcIikgIT09IC0xICYmIHVhLmluZGV4T2YoXCJjaHJvbWVcIikgPT09IC0xKSB7IC8vIHNhZmFyaSBzdWJ0cmFjdHMgdGhlIHNjcm9sbGJhciB3aWR0aFxyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHdpZHRoOiB0aGlzLndpbmRvd1JlZi5uYXRpdmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLFxyXG5cdFx0XHRcdGhlaWdodDogdGhpcy53aW5kb3dSZWYubmF0aXZlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0d2lkdGg6IHRoaXMud2luZG93UmVmLm5hdGl2ZS5pbm5lcldpZHRoLFxyXG5cdFx0XHRoZWlnaHQ6IHRoaXMud2luZG93UmVmLm5hdGl2ZS5pbm5lckhlaWdodCxcclxuXHRcdH07XHJcblx0fVxyXG5cclxufVxyXG4iXX0=
|
|
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 { generateViewportSizeTypeInfoList, generateViewportSizeTypeInfoRefs, getSizeTypeInfo } from "./viewport.util";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../platform/window";
|
|
8
|
+
import * as i2 from "./viewport-server-size.service";
|
|
9
|
+
export class ViewportService {
|
|
10
|
+
constructor(windowRef, viewportServerSize, config) {
|
|
11
|
+
this.windowRef = windowRef;
|
|
12
|
+
this.viewportServerSize = viewportServerSize;
|
|
13
|
+
this._sizeTypes = generateViewportSizeTypeInfoList(config.viewport.breakpoints);
|
|
14
|
+
this._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);
|
|
15
|
+
if (windowRef.hasNative) {
|
|
16
|
+
this.resizeSnap$ = fromEvent(window, "resize").pipe(map(() => this.getViewportSize()), share());
|
|
17
|
+
this.resize$ = this.resizeSnap$.pipe(auditTime(config.viewport.resizePollingSpeed), share());
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this.resizeSnap$ = this.resize$ = of(viewportServerSize.get());
|
|
21
|
+
}
|
|
22
|
+
const size = this.getViewportSize();
|
|
23
|
+
this._sizeTypeSnapshot = getSizeTypeInfo(size.width, this.sizeTypes);
|
|
24
|
+
const sizeFn = (obs$) => obs$.pipe(startWith(size), distinctUntilChanged((a, b) => a.width === b.width && a.height === b.height), shareReplay(1));
|
|
25
|
+
this.sizeSnap$ = sizeFn(this.resizeSnap$);
|
|
26
|
+
this.size$ = sizeFn(this.resize$);
|
|
27
|
+
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));
|
|
28
|
+
this.sizeType$ = sizeTypeFn(this.size$);
|
|
29
|
+
this.sizeTypeSnap$ = sizeTypeFn(this.sizeSnap$);
|
|
30
|
+
}
|
|
31
|
+
/** Viewport size type snapshot of the last value. (Prefer use `sizeType$` observable when possible.) */
|
|
32
|
+
get sizeTypeSnapshot() { return this._sizeTypeSnapshot; }
|
|
33
|
+
/** Size types refs of the generated viewport size type info. */
|
|
34
|
+
get sizeTypeMap() { return this._sizeTypeMap; }
|
|
35
|
+
/** Viewport size types list ordered by type, smallest to largest. */
|
|
36
|
+
get sizeTypes() { return this._sizeTypes; }
|
|
37
|
+
/** Returns the current viewport size */
|
|
38
|
+
getViewportSize() {
|
|
39
|
+
if (!this.windowRef.hasNative) {
|
|
40
|
+
return this.viewportServerSize.get();
|
|
41
|
+
}
|
|
42
|
+
const ua = navigator.userAgent.toLowerCase();
|
|
43
|
+
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) { // safari subtracts the scrollbar width
|
|
44
|
+
return {
|
|
45
|
+
width: this.windowRef.native.document.documentElement.clientWidth,
|
|
46
|
+
height: this.windowRef.native.document.documentElement.clientHeight,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
width: this.windowRef.native.innerWidth,
|
|
51
|
+
height: this.windowRef.native.innerHeight,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ViewportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportService, deps: [{ token: i1.WindowRef }, { token: i2.ViewportServerSizeService }, { token: UX_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
56
|
+
ViewportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportService, providedIn: "root" });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportService, decorators: [{
|
|
58
|
+
type: Injectable,
|
|
59
|
+
args: [{
|
|
60
|
+
providedIn: "root",
|
|
61
|
+
}]
|
|
62
|
+
}], ctorParameters: function () { return [{ type: i1.WindowRef }, { type: i2.ViewportServerSizeService }, { type: undefined, decorators: [{
|
|
63
|
+
type: Inject,
|
|
64
|
+
args: [UX_CONFIG]
|
|
65
|
+
}] }]; } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3cG9ydC92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFDTixHQUFHLEVBQ0gsR0FBRyxFQUNILG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEdBQ1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQWEsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSWpELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQU10SCxNQUFNLE9BQU8sZUFBZTtJQWlDM0IsWUFDUyxTQUFvQixFQUNwQixrQkFBNkMsRUFDbEMsTUFBaUI7UUFGNUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTJCO1FBR3JELElBQUksQ0FBQyxVQUFVLEdBQUcsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsWUFBWSxHQUFHLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV0RSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQVEsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDekQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUNqQyxLQUFLLEVBQUUsQ0FDUCxDQUFDO1lBRUYsSUFB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QVEsQ0FBQyxlQUFlLENBQUMsV0FBVztnQkFDakUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWTthQUNuRSxDQUFDO1NBQ0Y7UUFFRCxPQUFPO1lBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFDdkMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVc7U0FDekMsQ0FBQztJQUNILENBQUM7OzRHQWhHVyxlQUFlLG9GQW9DbEIsU0FBUztnSEFwQ04sZUFBZSxjQUZmLE1BQU07MkZBRU4sZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQXFDRSxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50LCBvZiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1xuXHRtYXAsXG5cdHRhcCxcblx0ZGlzdGluY3RVbnRpbENoYW5nZWQsXG5cdHN0YXJ0V2l0aCxcblx0c2hhcmUsXG5cdHNoYXJlUmVwbGF5LFxuXHRhdWRpdFRpbWUsXG59IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBVeE9wdGlvbnMsIFVYX0NPTkZJRyB9IGZyb20gXCIuLi9jb25maWdcIjtcbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLCBWaWV3cG9ydFNpemUgfSBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSBcIi4uL3BsYXRmb3JtL3dpbmRvd1wiO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2ZXJTaXplU2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LXNlcnZlci1zaXplLnNlcnZpY2VcIjtcbmltcG9ydCB7IGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZUluZm9MaXN0LCBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvUmVmcywgZ2V0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4vdmlld3BvcnQudXRpbFwiO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2Uge1xuXG5cdC8qKiBXaW5kb3cgcmVzaXplIG9ic2VydmFibGUuICovXG5cdHJlYWRvbmx5IHJlc2l6ZVNuYXAkOiBPYnNlcnZhYmxlPFZpZXdwb3J0U2l6ZT47XG5cblx0LyoqIFdpbmRvdyByZXNpemUgb2JzZXJ2YWJsZSAod2hpY2ggaXMgYWxzbyB0aHJvdHRsZWQpLiAqL1xuXHRyZWFkb25seSByZXNpemUkOiBPYnNlcnZhYmxlPFZpZXdwb3J0U2l6ZT47XG5cblx0LyoqIFZpZXdwb3J0IHNpemUgdHlwZSBvYnNlcnZhYmxlICh3aGljaCBpcyBhbHNvIHRocm90dGxlZCkuICovXG5cdHJlYWRvbmx5IHNpemVUeXBlJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemVUeXBlSW5mbz47XG5cblx0LyoqIFZpZXdwb3J0IHNpemUgdHlwZSBvYnNlcnZhYmxlLiAqL1xuXHRyZWFkb25seSBzaXplVHlwZVNuYXAkOiBPYnNlcnZhYmxlPFZpZXdwb3J0U2l6ZVR5cGVJbmZvPjtcblxuXHQvKiogVmlld3BvcnQgc2l6ZSB0eXBlIHNuYXBzaG90IG9mIHRoZSBsYXN0IHZhbHVlLiAoUHJlZmVyIHVzZSBgc2l6ZVR5cGUkYCBvYnNlcnZhYmxlIHdoZW4gcG9zc2libGUuKSAqL1xuXHRnZXQgc2l6ZVR5cGVTbmFwc2hvdCgpOiBWaWV3cG9ydFNpemVUeXBlSW5mbyB7IHJldHVybiB0aGlzLl9zaXplVHlwZVNuYXBzaG90OyB9XG5cblx0LyoqIFZpZXdwb3J0IHNpemUgb2JzZXJ2YWJsZSAod2hpY2ggaXMgYWxzbyB0aHJvdHRsZWQpLiAqL1xuXHRyZWFkb25seSBzaXplJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+O1xuXG5cdC8qKiBWaWV3cG9ydCBzaXplIG9ic2VydmFibGUuICovXG5cdHJlYWRvbmx5IHNpemVTbmFwJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+O1xuXG5cdC8qKiBTaXplIHR5cGVzIHJlZnMgb2YgdGhlIGdlbmVyYXRlZCB2aWV3cG9ydCBzaXplIHR5cGUgaW5mby4gKi9cblx0Z2V0IHNpemVUeXBlTWFwKCk6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+IHsgcmV0dXJuIHRoaXMuX3NpemVUeXBlTWFwOyB9XG5cblx0LyoqIFZpZXdwb3J0IHNpemUgdHlwZXMgbGlzdCBvcmRlcmVkIGJ5IHR5cGUsIHNtYWxsZXN0IHRvIGxhcmdlc3QuICovXG5cdGdldCBzaXplVHlwZXMoKTogVmlld3BvcnRTaXplVHlwZUluZm9bXSB7IHJldHVybiB0aGlzLl9zaXplVHlwZXM7IH1cblxuXHRwcml2YXRlIF9zaXplVHlwZU1hcDogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz47XG5cdHByaXZhdGUgX3NpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXTtcblx0cHJpdmF0ZSBfc2l6ZVR5cGVTbmFwc2hvdDogVmlld3BvcnRTaXplVHlwZUluZm87XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSB3aW5kb3dSZWY6IFdpbmRvd1JlZixcblx0XHRwcml2YXRlIHZpZXdwb3J0U2VydmVyU2l6ZTogVmlld3BvcnRTZXJ2ZXJTaXplU2VydmljZSxcblx0XHRASW5qZWN0KFVYX0NPTkZJRykgY29uZmlnOiBVeE9wdGlvbnMsXG5cdCkge1xuXHRcdHRoaXMuX3NpemVUeXBlcyA9IGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZUluZm9MaXN0KGNvbmZpZy52aWV3cG9ydC5icmVha3BvaW50cyk7XG5cdFx0dGhpcy5fc2l6ZVR5cGVNYXAgPSBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvUmVmcyh0aGlzLl9zaXplVHlwZXMpO1xuXG5cdFx0aWYgKHdpbmRvd1JlZi5oYXNOYXRpdmUpIHtcblx0XHRcdHRoaXMucmVzaXplU25hcCQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgXCJyZXNpemVcIikucGlwZShcblx0XHRcdFx0bWFwKCgpID0+IHRoaXMuZ2V0Vmlld3BvcnRTaXplKCkpLFxuXHRcdFx0XHRzaGFyZSgpXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLnJlc2l6ZSQgPSB0aGlzLnJlc2l6ZVNuYXAkLnBpcGUoXG5cdFx0XHRcdGF1ZGl0VGltZShjb25maWcudmlld3BvcnQucmVzaXplUG9sbGluZ1NwZWVkKSxcblx0XHRcdFx0c2hhcmUoKSxcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVzaXplU25hcCQgPSB0aGlzLnJlc2l6ZSQgPSBvZih2aWV3cG9ydFNlcnZlclNpemUuZ2V0KCkpO1xuXHRcdH1cblx0XHRjb25zdCBzaXplID0gdGhpcy5nZXRWaWV3cG9ydFNpemUoKTtcblx0XHR0aGlzLl9zaXplVHlwZVNuYXBzaG90ID0gZ2V0U2l6ZVR5cGVJbmZvKHNpemUud2lkdGgsIHRoaXMuc2l6ZVR5cGVzKTtcblxuXHRcdGNvbnN0IHNpemVGbiA9IChvYnMkOiBPYnNlcnZhYmxlPFZpZXdwb3J0U2l6ZT4pID0+IG9icyQucGlwZShcblx0XHRcdHN0YXJ0V2l0aChzaXplKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodCksXG5cdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHQpO1xuXG5cdFx0dGhpcy5zaXplU25hcCQgPSBzaXplRm4odGhpcy5yZXNpemVTbmFwJCk7XG5cdFx0dGhpcy5zaXplJCA9IHNpemVGbih0aGlzLnJlc2l6ZSQpO1xuXG5cdFx0Y29uc3Qgc2l6ZVR5cGVGbiA9IChvYnMkOiBPYnNlcnZhYmxlPFZpZXdwb3J0U2l6ZT4pID0+IG9icyQucGlwZShcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBhLndpZHRoID09PSBiLndpZHRoKSxcblx0XHRcdG1hcCh4ID0+IGdldFNpemVUeXBlSW5mbyh4LndpZHRoLCB0aGlzLnNpemVUeXBlcykpLFxuXHRcdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcblx0XHRcdHRhcCh4ID0+IHRoaXMuX3NpemVUeXBlU25hcHNob3QgPSB4KSxcblx0XHRcdHNoYXJlUmVwbGF5KDEpLFxuXHRcdCk7XG5cblx0XHR0aGlzLnNpemVUeXBlJCA9IHNpemVUeXBlRm4odGhpcy5zaXplJCk7XG5cdFx0dGhpcy5zaXplVHlwZVNuYXAkID0gc2l6ZVR5cGVGbih0aGlzLnNpemVTbmFwJCk7XG5cdH1cblxuXHQvKiogUmV0dXJucyB0aGUgY3VycmVudCB2aWV3cG9ydCBzaXplICovXG5cdHByaXZhdGUgZ2V0Vmlld3BvcnRTaXplKCk6IFZpZXdwb3J0U2l6ZSB7XG5cdFx0aWYgKCF0aGlzLndpbmRvd1JlZi5oYXNOYXRpdmUpIHtcblx0XHRcdHJldHVybiB0aGlzLnZpZXdwb3J0U2VydmVyU2l6ZS5nZXQoKTtcblx0XHR9XG5cblx0XHRjb25zdCB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcblx0XHRpZiAodWEuaW5kZXhPZihcInNhZmFyaVwiKSAhPT0gLTEgJiYgdWEuaW5kZXhPZihcImNocm9tZVwiKSA9PT0gLTEpIHsgLy8gc2FmYXJpIHN1YnRyYWN0cyB0aGUgc2Nyb2xsYmFyIHdpZHRoXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR3aWR0aDogdGhpcy53aW5kb3dSZWYubmF0aXZlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCxcblx0XHRcdFx0aGVpZ2h0OiB0aGlzLndpbmRvd1JlZi5uYXRpdmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHdpZHRoOiB0aGlzLndpbmRvd1JlZi5uYXRpdmUuaW5uZXJXaWR0aCxcblx0XHRcdGhlaWdodDogdGhpcy53aW5kb3dSZWYubmF0aXZlLmlubmVySGVpZ2h0LFxuXHRcdH07XG5cdH1cblxufVxuIl19
|
|
@@ -1,117 +1,117 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3cG9ydC92aWV3cG9ydC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixtQkFBbUIsRUFJbkIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLFVBQVUsK0JBQStCLENBQUMsS0FBYztJQUM3RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUN4QyxPQUFPLEtBQUssQ0FBQztLQUNiO0lBQ0QsTUFBTSxJQUFJLEdBQTJDLEtBQUssQ0FBQztJQUMzRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNoQyxPQUFPLElBQUksQ0FBQztLQUNaO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9DQUFvQyxDQUFDLEdBQVk7SUFDaEUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE9BQU8sS0FBSyxDQUFDO0tBQ2I7SUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDdkIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNyQixNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ2pCLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtLQUNEO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBR0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFrRDtJQUMvRixDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDL0QsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2xFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMvRCxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2xFLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO0NBQzFFLENBQUM7QUFFRixNQUFNLFVBQVUsd0JBQXdCLENBQ3ZDLFlBQWtDLEVBQ2xDLFVBQW1DLEVBQ25DLHdCQUEwRDtJQUUxRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9FLElBQUksVUFBVSxDQUFDO0lBQ2YsSUFBSSxrQkFBa0IsQ0FBQztJQUV2QixJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7UUFDekMsTUFBTSxHQUFHLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxJQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQzdGO1FBQ0QsTUFBTSxVQUFVLEdBQUcsaUNBQWlDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0RixrQkFBa0IsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDN0Q7U0FBTTtRQUNOLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2pFO0lBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN2RSxnRkFBZ0Y7SUFDaEYsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxLQUEyQyxFQUFFLFdBQW1CLEVBQUUsWUFBcUI7SUFDckcsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNYLE9BQU8sWUFBWSxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMxQixDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDN0IsQ0FBQyxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBYSxFQUFFLFNBQWlDO0lBQy9FLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTVDLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxjQUFjLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDOUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxLQUFLLElBQUksb0JBQW9CLENBQUMsY0FBYyxFQUFFO1lBQ2pELE9BQU8sb0JBQW9CLENBQUM7U0FDNUI7S0FDRDtJQUVELE9BQU8sU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsb0JBQW9CLENBQUMsV0FBK0I7SUFDNUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztTQUNoQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBbUMsV0FBYztJQUN4RixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ25CLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FDdkMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUM3QixVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQyxFQUFFLEVBQUUsQ0FDTCxDQUM2QixDQUFDO0FBQ2pDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxXQUErQjtJQUMvRSxPQUFPLG9CQUFvQixDQUFDLFdBQVcsQ0FBQztTQUN0QyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUM3QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDZCxJQUFJO1FBQ0osSUFBSSxFQUFFLEtBQUs7UUFDWCxjQUFjLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsY0FBc0M7SUFDdEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNuQixjQUFjLENBQUMsTUFBTSxDQUFtQyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUNsRixVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUN6QyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUN6QyxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ04sQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uL2ludGVybmFsL2ludGVybmFsLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcblx0Q29tcGFyaXNvbk9wZXJhdGlvbixcclxuXHRWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbixcclxuXHRWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRWaWV3cG9ydE1hdGNoQ29uZGl0aW9uc1xyXG59IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uIHtcclxuXHRpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiIHx8ICF2YWx1ZSkge1xyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHRjb25zdCBhcmdzOiBQYXJ0aWFsPFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uPiA9IHZhbHVlO1xyXG5cdGlmIChhcmdzLnNpemUgJiYgYXJncy5vcGVyYXRpb24pIHtcclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHRyZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1ZpZXdwb3J0U2l6ZU1hdGNoZXJUdXBsZUV4cHJlc3Npb24oYXJnOiB1bmtub3duKTogYXJnIGlzIFtDb21wYXJpc29uT3BlcmF0aW9uLCBzdHJpbmddIHtcclxuXHRpZiAoIWFyZykge1xyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHRpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XHJcblx0XHRpZiAoYXJnLmxlbmd0aCA9PT0gMikge1xyXG5cdFx0XHRjb25zdCBbb3BdID0gYXJnO1xyXG5cdFx0XHRyZXR1cm4gb3BlcmF0aW9ucy5pbmNsdWRlcyhvcCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuXHJcbmNvbnN0IG9wZXJhdGlvbnMgPSBPYmplY3QudmFsdWVzKENvbXBhcmlzb25PcGVyYXRpb24pO1xyXG5cclxuZXhwb3J0IGNvbnN0IENPTVBBUklTT05fT1BFUkFUSU9OX0ZVTkNfTUFQUElORzogRGljdGlvbmFyeTwoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGJvb2xlYW4+ID0ge1xyXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmVxdWFsc106IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA9PT0gYixcclxuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5ub3RFcXVhbHNdOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgIT09IGIsXHJcblx0W0NvbXBhcmlzb25PcGVyYXRpb24ubGVzc1RoYW5dOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgPCBiLFxyXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmxlc3NPckVxdWFsVGhhbl06IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA8PSBiLFxyXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmdyZWF0ZXJUaGFuXTogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhID4gYixcclxuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5ncmVhdGVyT3JFcXVhbFRoYW5dOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgPj0gYixcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1ZpZXdwb3J0Q29uZGl0aW9uTWF0Y2goXHJcblx0ZXZhbHVhdGVTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRjb25kaXRpb25zOiBWaWV3cG9ydE1hdGNoQ29uZGl0aW9ucyxcclxuXHR2aWV3cG9ydFNpemVUeXBlSW5mb1JlZnM6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+XHJcbik6IGJvb2xlYW4ge1xyXG5cdGNvbnN0IGlzRXhjbHVkZWQgPSBtYXRjaChjb25kaXRpb25zLnNpemVUeXBlRXhjbHVkZSwgZXZhbHVhdGVTaXplLm5hbWUsIGZhbHNlKTtcclxuXHRsZXQgaXNJbmNsdWRlZDtcclxuXHRsZXQgaXNFeHByZXNzaW9uVHJ1dGh5O1xyXG5cclxuXHRpZiAoIWlzRXhjbHVkZWQgJiYgY29uZGl0aW9ucy5leHByZXNzaW9uKSB7XHJcblx0XHRjb25zdCByZWYgPSB2aWV3cG9ydFNpemVUeXBlSW5mb1JlZnNbY29uZGl0aW9ucy5leHByZXNzaW9uLnNpemVdO1xyXG5cdFx0aWYoIXJlZikge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFZpZXdwb3J0IHNpemUgdHlwZSBpcyBpbnZhbGlkLiBTaXplIHR5cGU6ICcke2NvbmRpdGlvbnMuZXhwcmVzc2lvbi5zaXplfSdgKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGV4cE1hdGNoZXIgPSBDT01QQVJJU09OX09QRVJBVElPTl9GVU5DX01BUFBJTkdbY29uZGl0aW9ucy5leHByZXNzaW9uLm9wZXJhdGlvbl07XHJcblxyXG5cdFx0aXNFeHByZXNzaW9uVHJ1dGh5ID0gZXhwTWF0Y2hlcihldmFsdWF0ZVNpemUudHlwZSwgcmVmLnR5cGUpO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRpc0luY2x1ZGVkID0gbWF0Y2goY29uZGl0aW9ucy5zaXplVHlwZSwgZXZhbHVhdGVTaXplLm5hbWUsIHRydWUpO1xyXG5cdH1cclxuXHJcblx0Y29uc3Qgc2hvdWxkUmVuZGVyID0gKGlzRXhwcmVzc2lvblRydXRoeSB8fCBpc0luY2x1ZGVkKSAmJiAhaXNFeGNsdWRlZDtcclxuXHQvLyBjb25zb2xlLndhcm4oXCI+Pj4gc2hvdWxkUmVuZGVyXCIsIHsgZXZhbHVhdGVTaXplLCBjb25kaXRpb25zLCBzaG91bGRSZW5kZXIgfSk7XHJcblx0cmV0dXJuICEhc2hvdWxkUmVuZGVyO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYXRjaCh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkLCB0YXJnZXRWYWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGJvb2xlYW4pIHtcclxuXHRpZiAoIXZhbHVlKSB7XHJcblx0XHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXHJcblx0XHQ/IHZhbHVlLmluY2x1ZGVzKHRhcmdldFZhbHVlKVxyXG5cdFx0OiB2YWx1ZSA9PT0gdGFyZ2V0VmFsdWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTaXplVHlwZUluZm8od2lkdGg6IG51bWJlciwgc2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdKTogVmlld3BvcnRTaXplVHlwZUluZm8ge1xyXG5cdGNvbnN0IGxhc3RFbnRyeUluZGV4ID0gc2l6ZVR5cGVzLmxlbmd0aCAtIDE7XHJcblxyXG5cdGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGxhc3RFbnRyeUluZGV4OyBpZHgrKykge1xyXG5cdFx0Y29uc3Qgdmlld3BvcnRTaXplVHlwZUluZm8gPSBzaXplVHlwZXNbaWR4XTtcclxuXHJcblx0XHRpZiAod2lkdGggPD0gdmlld3BvcnRTaXplVHlwZUluZm8ud2lkdGhUaHJlc2hvbGQpIHtcclxuXHRcdFx0cmV0dXJuIHZpZXdwb3J0U2l6ZVR5cGVJbmZvO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIHNpemVUeXBlc1tsYXN0RW50cnlJbmRleF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludHMgaW50byBhIDIgZGltZW5zaW9uYWwgYXJyYXkgY29udGFpbmluZyB0aGUgbmFtZSBhbmQgd2lkdGgsIGFuZCBzb3J0ZWQgZnJvbVxyXG4gKiAgc21hbGxlc3QgdG8gbGFyZ2VzdC5cclxuICogQHBhcmFtIGJyZWFrcG9pbnRzIHRoZSBicmVha3BvaW50cyBvYnRhaW5lZCBmcm9tIHRoZSBjb25maWdcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRTb3J0ZWRCcmVha3BvaW50cyhicmVha3BvaW50czogRGljdGlvbmFyeTxudW1iZXI+KTogW3N0cmluZywgbnVtYmVyXVtdIHtcclxuXHRyZXR1cm4gT2JqZWN0LmVudHJpZXMoYnJlYWtwb2ludHMpXHJcblx0XHQuc29ydCgoWywgd2lkdGhBXSwgWywgd2lkdGhCXSkgPT4gd2lkdGhBIC0gd2lkdGhCKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgdXRpbCBmdW5jdGlvbiB3aGljaCBnZW5lcmF0ZXMgdGhlIFZpZXdwb3J0U2l6ZVR5cGVJbmZvLnR5cGUgZm9yIGVhY2ggYnJlYWtwb2ludC5cclxuICogQHBhcmFtIGJyZWFrcG9pbnRzIHRoZSBjdXN0b20gYnJlYWtwb2ludHNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4+KGJyZWFrcG9pbnRzOiBUKTogVCAmIFJlY29yZDxudW1iZXIsIHN0cmluZz4ge1xyXG5cdHJldHVybiBPYmplY3QuZnJlZXplKFxyXG5cdFx0Z2V0U29ydGVkQnJlYWtwb2ludHMoYnJlYWtwb2ludHMpLnJlZHVjZTxSZWNvcmQ8bnVtYmVyIHwgc3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+PihcclxuXHRcdFx0KGRpY3Rpb25hcnksIFtuYW1lXSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRkaWN0aW9uYXJ5W25hbWVdID0gaW5kZXg7XHJcblx0XHRcdFx0ZGljdGlvbmFyeVtpbmRleF0gPSBuYW1lO1xyXG5cdFx0XHRcdHJldHVybiBkaWN0aW9uYXJ5O1xyXG5cdFx0XHR9LCB7fVxyXG5cdFx0KVxyXG5cdCkgYXMgVCAmIFJlY29yZDxudW1iZXIsIHN0cmluZz47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQcmUtcHJvY2Vzc2VzIHRoZSBnaXZlbiBicmVha3BvaW50cyBpbnRvIGFuIG9yZGVyZWQgbGlzdCBmcm9tIHNtYWxsZXN0IHRvIGxhcmdlc3Qgd2hpbGUgZ2VuZXJhdGluZ1xyXG4gKiAgYWxsIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gdGhlIHZpZXdwb3J0LlxyXG4gKiBAcGFyYW0gYnJlYWtwb2ludHMgdGhlIGJyZWFrcG9pbnRzIG9idGFpbmVkIGZyb20gdGhlIGNvbmZpZ1xyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvTGlzdChicmVha3BvaW50czogRGljdGlvbmFyeTxudW1iZXI+KTogVmlld3BvcnRTaXplVHlwZUluZm9bXSB7XHJcblx0cmV0dXJuIGdldFNvcnRlZEJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzKVxyXG5cdFx0Lm1hcCgoW25hbWUsIHdpZHRoXSwgaW5kZXgpID0+XHJcblx0XHRcdChPYmplY3QuZnJlZXplKHtcclxuXHRcdFx0XHRuYW1lLFxyXG5cdFx0XHRcdHR5cGU6IGluZGV4LFxyXG5cdFx0XHRcdHdpZHRoVGhyZXNob2xkOiB3aWR0aFxyXG5cdFx0XHR9KSlcclxuXHRcdCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludCBsaXN0IGludG8gYSBkaWN0aW9uYXJ5IHdoaWxlIHVzaW5nIHRoZSBuYW1lIGFzIGtleS5cclxuICogQHBhcmFtIGJyZWFrcG9pbnRMaXN0IHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZUluZm9SZWZzKGJyZWFrcG9pbnRMaXN0OiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdKTogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz4ge1xyXG5cdHJldHVybiBPYmplY3QuZnJlZXplKFxyXG5cdFx0YnJlYWtwb2ludExpc3QucmVkdWNlPERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+PigoZGljdGlvbmFyeSwgYnJlYWtwb2ludCkgPT4ge1xyXG5cdFx0XHRkaWN0aW9uYXJ5W2JyZWFrcG9pbnQubmFtZV0gPSBicmVha3BvaW50O1xyXG5cdFx0XHRkaWN0aW9uYXJ5W2JyZWFrcG9pbnQudHlwZV0gPSBicmVha3BvaW50O1xyXG5cdFx0XHRyZXR1cm4gZGljdGlvbmFyeTtcclxuXHRcdH0sIHt9KVxyXG5cdCk7XHJcbn1cclxuIl19
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3cG9ydC92aWV3cG9ydC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixtQkFBbUIsRUFJbkIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLFVBQVUsK0JBQStCLENBQUMsS0FBYztJQUM3RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUN4QyxPQUFPLEtBQUssQ0FBQztLQUNiO0lBQ0QsTUFBTSxJQUFJLEdBQTJDLEtBQUssQ0FBQztJQUMzRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNoQyxPQUFPLElBQUksQ0FBQztLQUNaO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9DQUFvQyxDQUFDLEdBQVk7SUFDaEUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE9BQU8sS0FBSyxDQUFDO0tBQ2I7SUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDdkIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNyQixNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ2pCLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtLQUNEO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBR0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFrRDtJQUMvRixDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDL0QsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2xFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMvRCxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2xFLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO0NBQzFFLENBQUM7QUFFRixNQUFNLFVBQVUsd0JBQXdCLENBQ3ZDLFlBQWtDLEVBQ2xDLFVBQW1DLEVBQ25DLHdCQUEwRDtJQUUxRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9FLElBQUksVUFBVSxDQUFDO0lBQ2YsSUFBSSxrQkFBa0IsQ0FBQztJQUV2QixJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7UUFDekMsTUFBTSxHQUFHLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxJQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQzdGO1FBQ0QsTUFBTSxVQUFVLEdBQUcsaUNBQWlDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0RixrQkFBa0IsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDN0Q7U0FBTTtRQUNOLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2pFO0lBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN2RSxnRkFBZ0Y7SUFDaEYsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxLQUEyQyxFQUFFLFdBQW1CLEVBQUUsWUFBcUI7SUFDckcsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNYLE9BQU8sWUFBWSxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMxQixDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDN0IsQ0FBQyxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBYSxFQUFFLFNBQWlDO0lBQy9FLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTVDLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxjQUFjLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDOUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxLQUFLLElBQUksb0JBQW9CLENBQUMsY0FBYyxFQUFFO1lBQ2pELE9BQU8sb0JBQW9CLENBQUM7U0FDNUI7S0FDRDtJQUVELE9BQU8sU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsb0JBQW9CLENBQUMsV0FBK0I7SUFDNUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztTQUNoQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBbUMsV0FBYztJQUN4RixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ25CLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FDdkMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUM3QixVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQyxFQUFFLEVBQUUsQ0FDTCxDQUM2QixDQUFDO0FBQ2pDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxXQUErQjtJQUMvRSxPQUFPLG9CQUFvQixDQUFDLFdBQVcsQ0FBQztTQUN0QyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUM3QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDZCxJQUFJO1FBQ0osSUFBSSxFQUFFLEtBQUs7UUFDWCxjQUFjLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsY0FBc0M7SUFDdEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNuQixjQUFjLENBQUMsTUFBTSxDQUFtQyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUNsRixVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUN6QyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUN6QyxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ04sQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uL2ludGVybmFsL2ludGVybmFsLm1vZGVsXCI7XG5pbXBvcnQge1xuXHRDb21wYXJpc29uT3BlcmF0aW9uLFxuXHRWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbixcblx0Vmlld3BvcnRTaXplVHlwZUluZm8sXG5cdFZpZXdwb3J0TWF0Y2hDb25kaXRpb25zXG59IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24ge1xuXHRpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiIHx8ICF2YWx1ZSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRjb25zdCBhcmdzOiBQYXJ0aWFsPFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uPiA9IHZhbHVlO1xuXHRpZiAoYXJncy5zaXplICYmIGFyZ3Mub3BlcmF0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uKGFyZzogdW5rbm93bik6IGFyZyBpcyBbQ29tcGFyaXNvbk9wZXJhdGlvbiwgc3RyaW5nXSB7XG5cdGlmICghYXJnKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRpZiAoYXJnLmxlbmd0aCA9PT0gMikge1xuXHRcdFx0Y29uc3QgW29wXSA9IGFyZztcblx0XHRcdHJldHVybiBvcGVyYXRpb25zLmluY2x1ZGVzKG9wKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5cbmNvbnN0IG9wZXJhdGlvbnMgPSBPYmplY3QudmFsdWVzKENvbXBhcmlzb25PcGVyYXRpb24pO1xuXG5leHBvcnQgY29uc3QgQ09NUEFSSVNPTl9PUEVSQVRJT05fRlVOQ19NQVBQSU5HOiBEaWN0aW9uYXJ5PChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYm9vbGVhbj4gPSB7XG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmVxdWFsc106IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA9PT0gYixcblx0W0NvbXBhcmlzb25PcGVyYXRpb24ubm90RXF1YWxzXTogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhICE9PSBiLFxuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5sZXNzVGhhbl06IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA8IGIsXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmxlc3NPckVxdWFsVGhhbl06IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA8PSBiLFxuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5ncmVhdGVyVGhhbl06IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA+IGIsXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmdyZWF0ZXJPckVxdWFsVGhhbl06IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA+PSBiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmlld3BvcnRDb25kaXRpb25NYXRjaChcblx0ZXZhbHVhdGVTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0Y29uZGl0aW9uczogVmlld3BvcnRNYXRjaENvbmRpdGlvbnMsXG5cdHZpZXdwb3J0U2l6ZVR5cGVJbmZvUmVmczogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz5cbik6IGJvb2xlYW4ge1xuXHRjb25zdCBpc0V4Y2x1ZGVkID0gbWF0Y2goY29uZGl0aW9ucy5zaXplVHlwZUV4Y2x1ZGUsIGV2YWx1YXRlU2l6ZS5uYW1lLCBmYWxzZSk7XG5cdGxldCBpc0luY2x1ZGVkO1xuXHRsZXQgaXNFeHByZXNzaW9uVHJ1dGh5O1xuXG5cdGlmICghaXNFeGNsdWRlZCAmJiBjb25kaXRpb25zLmV4cHJlc3Npb24pIHtcblx0XHRjb25zdCByZWYgPSB2aWV3cG9ydFNpemVUeXBlSW5mb1JlZnNbY29uZGl0aW9ucy5leHByZXNzaW9uLnNpemVdO1xuXHRcdGlmKCFyZWYpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgVmlld3BvcnQgc2l6ZSB0eXBlIGlzIGludmFsaWQuIFNpemUgdHlwZTogJyR7Y29uZGl0aW9ucy5leHByZXNzaW9uLnNpemV9J2ApO1xuXHRcdH1cblx0XHRjb25zdCBleHBNYXRjaGVyID0gQ09NUEFSSVNPTl9PUEVSQVRJT05fRlVOQ19NQVBQSU5HW2NvbmRpdGlvbnMuZXhwcmVzc2lvbi5vcGVyYXRpb25dO1xuXG5cdFx0aXNFeHByZXNzaW9uVHJ1dGh5ID0gZXhwTWF0Y2hlcihldmFsdWF0ZVNpemUudHlwZSwgcmVmLnR5cGUpO1xuXHR9IGVsc2Uge1xuXHRcdGlzSW5jbHVkZWQgPSBtYXRjaChjb25kaXRpb25zLnNpemVUeXBlLCBldmFsdWF0ZVNpemUubmFtZSwgdHJ1ZSk7XG5cdH1cblxuXHRjb25zdCBzaG91bGRSZW5kZXIgPSAoaXNFeHByZXNzaW9uVHJ1dGh5IHx8IGlzSW5jbHVkZWQpICYmICFpc0V4Y2x1ZGVkO1xuXHQvLyBjb25zb2xlLndhcm4oXCI+Pj4gc2hvdWxkUmVuZGVyXCIsIHsgZXZhbHVhdGVTaXplLCBjb25kaXRpb25zLCBzaG91bGRSZW5kZXIgfSk7XG5cdHJldHVybiAhIXNob3VsZFJlbmRlcjtcbn1cblxuZnVuY3Rpb24gbWF0Y2godmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCwgdGFyZ2V0VmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBib29sZWFuKSB7XG5cdGlmICghdmFsdWUpIHtcblx0XHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xuXHR9XG5cblx0cmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG5cdFx0PyB2YWx1ZS5pbmNsdWRlcyh0YXJnZXRWYWx1ZSlcblx0XHQ6IHZhbHVlID09PSB0YXJnZXRWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpemVUeXBlSW5mbyh3aWR0aDogbnVtYmVyLCBzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10pOiBWaWV3cG9ydFNpemVUeXBlSW5mbyB7XG5cdGNvbnN0IGxhc3RFbnRyeUluZGV4ID0gc2l6ZVR5cGVzLmxlbmd0aCAtIDE7XG5cblx0Zm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgbGFzdEVudHJ5SW5kZXg7IGlkeCsrKSB7XG5cdFx0Y29uc3Qgdmlld3BvcnRTaXplVHlwZUluZm8gPSBzaXplVHlwZXNbaWR4XTtcblxuXHRcdGlmICh3aWR0aCA8PSB2aWV3cG9ydFNpemVUeXBlSW5mby53aWR0aFRocmVzaG9sZCkge1xuXHRcdFx0cmV0dXJuIHZpZXdwb3J0U2l6ZVR5cGVJbmZvO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBzaXplVHlwZXNbbGFzdEVudHJ5SW5kZXhdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBicmVha3BvaW50cyBpbnRvIGEgMiBkaW1lbnNpb25hbCBhcnJheSBjb250YWluaW5nIHRoZSBuYW1lIGFuZCB3aWR0aCwgYW5kIHNvcnRlZCBmcm9tXG4gKiAgc21hbGxlc3QgdG8gbGFyZ2VzdC5cbiAqIEBwYXJhbSBicmVha3BvaW50cyB0aGUgYnJlYWtwb2ludHMgb2J0YWluZWQgZnJvbSB0aGUgY29uZmlnXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gZ2V0U29ydGVkQnJlYWtwb2ludHMoYnJlYWtwb2ludHM6IERpY3Rpb25hcnk8bnVtYmVyPik6IFtzdHJpbmcsIG51bWJlcl1bXSB7XG5cdHJldHVybiBPYmplY3QuZW50cmllcyhicmVha3BvaW50cylcblx0XHQuc29ydCgoWywgd2lkdGhBXSwgWywgd2lkdGhCXSkgPT4gd2lkdGhBIC0gd2lkdGhCKTtcbn1cblxuLyoqXG4gKiBBIHV0aWwgZnVuY3Rpb24gd2hpY2ggZ2VuZXJhdGVzIHRoZSBWaWV3cG9ydFNpemVUeXBlSW5mby50eXBlIGZvciBlYWNoIGJyZWFrcG9pbnQuXG4gKiBAcGFyYW0gYnJlYWtwb2ludHMgdGhlIGN1c3RvbSBicmVha3BvaW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PihicmVha3BvaW50czogVCk6IFQgJiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+IHtcblx0cmV0dXJuIE9iamVjdC5mcmVlemUoXG5cdFx0Z2V0U29ydGVkQnJlYWtwb2ludHMoYnJlYWtwb2ludHMpLnJlZHVjZTxSZWNvcmQ8bnVtYmVyIHwgc3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+Pihcblx0XHRcdChkaWN0aW9uYXJ5LCBbbmFtZV0sIGluZGV4KSA9PiB7XG5cdFx0XHRcdGRpY3Rpb25hcnlbbmFtZV0gPSBpbmRleDtcblx0XHRcdFx0ZGljdGlvbmFyeVtpbmRleF0gPSBuYW1lO1xuXHRcdFx0XHRyZXR1cm4gZGljdGlvbmFyeTtcblx0XHRcdH0sIHt9XG5cdFx0KVxuXHQpIGFzIFQgJiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIFByZS1wcm9jZXNzZXMgdGhlIGdpdmVuIGJyZWFrcG9pbnRzIGludG8gYW4gb3JkZXJlZCBsaXN0IGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdCB3aGlsZSBnZW5lcmF0aW5nXG4gKiAgYWxsIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gdGhlIHZpZXdwb3J0LlxuICogQHBhcmFtIGJyZWFrcG9pbnRzIHRoZSBicmVha3BvaW50cyBvYnRhaW5lZCBmcm9tIHRoZSBjb25maWdcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlSW5mb0xpc3QoYnJlYWtwb2ludHM6IERpY3Rpb25hcnk8bnVtYmVyPik6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10ge1xuXHRyZXR1cm4gZ2V0U29ydGVkQnJlYWtwb2ludHMoYnJlYWtwb2ludHMpXG5cdFx0Lm1hcCgoW25hbWUsIHdpZHRoXSwgaW5kZXgpID0+XG5cdFx0XHQoT2JqZWN0LmZyZWV6ZSh7XG5cdFx0XHRcdG5hbWUsXG5cdFx0XHRcdHR5cGU6IGluZGV4LFxuXHRcdFx0XHR3aWR0aFRocmVzaG9sZDogd2lkdGhcblx0XHRcdH0pKVxuXHRcdCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGJyZWFrcG9pbnQgbGlzdCBpbnRvIGEgZGljdGlvbmFyeSB3aGlsZSB1c2luZyB0aGUgbmFtZSBhcyBrZXkuXG4gKiBAcGFyYW0gYnJlYWtwb2ludExpc3QgdGhlIGxpc3Qgb2YgYnJlYWtwb2ludHNcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlSW5mb1JlZnMoYnJlYWtwb2ludExpc3Q6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10pOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPiB7XG5cdHJldHVybiBPYmplY3QuZnJlZXplKFxuXHRcdGJyZWFrcG9pbnRMaXN0LnJlZHVjZTxEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPj4oKGRpY3Rpb25hcnksIGJyZWFrcG9pbnQpID0+IHtcblx0XHRcdGRpY3Rpb25hcnlbYnJlYWtwb2ludC5uYW1lXSA9IGJyZWFrcG9pbnQ7XG5cdFx0XHRkaWN0aW9uYXJ5W2JyZWFrcG9pbnQudHlwZV0gPSBicmVha3BvaW50O1xuXHRcdFx0cmV0dXJuIGRpY3Rpb25hcnk7XG5cdFx0fSwge30pXG5cdCk7XG59XG4iXX0=
|