@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,9 +0,0 @@
|
|
|
1
|
-
export * from "./viewport-data/index";
|
|
2
|
-
export { SsvViewportMatcherVarDirective, SsvViewportMatcherVarContext } from "./viewport-matcher-var.directive";
|
|
3
|
-
export { SsvViewportMatcherDirective, SsvViewportMatcherContext } from "./viewport-matcher.directive";
|
|
4
|
-
export { UX_VIEWPORT_SSR_DEVICE, ViewportServerSizeService } from "./viewport-server-size.service";
|
|
5
|
-
export { ComparisonOperation, DeviceType, ViewportSizeType } from "./viewport.model";
|
|
6
|
-
export { ViewportService } from "./viewport.service";
|
|
7
|
-
export { generateViewportSizeType } from "./viewport.util";
|
|
8
|
-
export { UX_VIEWPORT_DEFAULT_BREAKPOINTS } from "./viewport.const";
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiQzovZGV2L2dpdC9Ac3N2Lm5neC51eC9zcmMvIiwic291cmNlcyI6WyJ2aWV3cG9ydC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQW1DLGdCQUFnQixFQUF3QixNQUFNLGtCQUFrQixDQUFDO0FBQzVJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEvaW5kZXhcIjtcclxuXHJcbmV4cG9ydCB7IFNzdlZpZXdwb3J0TWF0Y2hlclZhckRpcmVjdGl2ZSwgU3N2Vmlld3BvcnRNYXRjaGVyVmFyQ29udGV4dCB9IGZyb20gXCIuL3ZpZXdwb3J0LW1hdGNoZXItdmFyLmRpcmVjdGl2ZVwiO1xyXG5leHBvcnQgeyBTc3ZWaWV3cG9ydE1hdGNoZXJEaXJlY3RpdmUsIFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQgfSBmcm9tIFwiLi92aWV3cG9ydC1tYXRjaGVyLmRpcmVjdGl2ZVwiO1xyXG5leHBvcnQgeyBVWF9WSUVXUE9SVF9TU1JfREVWSUNFLCBWaWV3cG9ydFNlcnZlclNpemVTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld3BvcnQtc2VydmVyLXNpemUuc2VydmljZVwiO1xyXG5leHBvcnQgeyBDb21wYXJpc29uT3BlcmF0aW9uLCBEZXZpY2VUeXBlLCBVeFZpZXdwb3J0T3B0aW9ucywgVmlld3BvcnRTaXplLCBWaWV3cG9ydFNpemVUeXBlLCBWaWV3cG9ydFNpemVUeXBlSW5mbyB9IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XHJcbmV4cG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LnNlcnZpY2VcIjtcclxuZXhwb3J0IHsgZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlIH0gZnJvbSBcIi4vdmlld3BvcnQudXRpbFwiO1xyXG5leHBvcnQgeyBVWF9WSUVXUE9SVF9ERUZBVUxUX0JSRUFLUE9JTlRTIH0gZnJvbSBcIi4vdmlld3BvcnQuY29uc3RcIjtcclxuIl19
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { ViewportDataService } from "./viewport-data.service";
|
|
2
|
-
export { ViewportDataPipe } from "./viewport-data.pipe";
|
|
3
|
-
export { ViewportDataMatchStrategy } from "./viewport-data-matcher";
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiQzovZGV2L2dpdC9Ac3N2Lm5neC51eC9zcmMvIiwic291cmNlcyI6WyJ2aWV3cG9ydC92aWV3cG9ydC1kYXRhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBc0IseUJBQXlCLEVBQW9DLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBWaWV3cG9ydERhdGFTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld3BvcnQtZGF0YS5zZXJ2aWNlXCI7XHJcbmV4cG9ydCB7IFZpZXdwb3J0RGF0YVBpcGUgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLnBpcGVcIjtcclxuZXhwb3J0IHsgVmlld3BvcnREYXRhQ29uZmlnLCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5TGl0ZXJhbCB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEtbWF0Y2hlclwiO1xyXG4iXX0=
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
export var ViewportDataMatchStrategy;
|
|
2
|
-
(function (ViewportDataMatchStrategy) {
|
|
3
|
-
/** Indicates that size should match exact or default. */
|
|
4
|
-
ViewportDataMatchStrategy[ViewportDataMatchStrategy["exact"] = 0] = "exact";
|
|
5
|
-
/** Indicates that size matches when exact match, first match smaller (down) or default. */
|
|
6
|
-
ViewportDataMatchStrategy[ViewportDataMatchStrategy["smaller"] = 1] = "smaller";
|
|
7
|
-
/** Indicates that size matches when exact match, first match larger (up) or default. */
|
|
8
|
-
ViewportDataMatchStrategy[ViewportDataMatchStrategy["larger"] = 2] = "larger";
|
|
9
|
-
/** Indicates that size matches when exact match, or it tries both smaller/larger (smaller is preferred) until match or default. */
|
|
10
|
-
ViewportDataMatchStrategy[ViewportDataMatchStrategy["closestSmallerFirst"] = 3] = "closestSmallerFirst";
|
|
11
|
-
/** Indicates that size matches when exact match, or it tries both larger/smaller (larger is preferred) until match or default. */
|
|
12
|
-
ViewportDataMatchStrategy[ViewportDataMatchStrategy["closestLargerFirst"] = 4] = "closestLargerFirst";
|
|
13
|
-
})(ViewportDataMatchStrategy || (ViewportDataMatchStrategy = {}));
|
|
14
|
-
/**
|
|
15
|
-
* Utility function to match data based on strategy and size.
|
|
16
|
-
*
|
|
17
|
-
* @param dataConfig Data config to generate rules based on.
|
|
18
|
-
* @param sizeType Size type to get data for.
|
|
19
|
-
* @param strategy Strategy to use when building rules.
|
|
20
|
-
* @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)
|
|
21
|
-
* @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)
|
|
22
|
-
* @returns Returns the matched data value.
|
|
23
|
-
*/
|
|
24
|
-
export function matchViewportData(dataConfig, sizeType, strategy, sizeTypes, sizeTypeMap) {
|
|
25
|
-
const matchFn = matchStrategyHandlerMap[strategy];
|
|
26
|
-
if (!matchFn) {
|
|
27
|
-
throw Error(`matchViewportData: Viewport Data strategy not implemented. Strategy: '${strategy}'`);
|
|
28
|
-
}
|
|
29
|
-
const data = matchFn(dataConfig, sizeType, sizeTypes, sizeTypeMap);
|
|
30
|
-
if (data !== undefined) {
|
|
31
|
-
return data;
|
|
32
|
-
}
|
|
33
|
-
return dataConfig.default;
|
|
34
|
-
}
|
|
35
|
-
const matchStrategyHandlerMap = {
|
|
36
|
-
[ViewportDataMatchStrategy.exact]: matchWithExact,
|
|
37
|
-
[ViewportDataMatchStrategy.larger]: matchWithLargerMatch,
|
|
38
|
-
[ViewportDataMatchStrategy.smaller]: matchWithSmallerMatch,
|
|
39
|
-
[ViewportDataMatchStrategy.closestSmallerFirst]: matchWithClosestSmallerFirstMatch,
|
|
40
|
-
[ViewportDataMatchStrategy.closestLargerFirst]: matchWithClosestLargerFirstMatch,
|
|
41
|
-
};
|
|
42
|
-
function matchWithExact(dataConfig, currentSizeType) {
|
|
43
|
-
return dataConfig[currentSizeType.name];
|
|
44
|
-
}
|
|
45
|
-
function matchWithLargerMatch(dataConfig, currentSizeType, sizeTypes) {
|
|
46
|
-
let data = dataConfig[currentSizeType.name];
|
|
47
|
-
if (data !== undefined) {
|
|
48
|
-
return data;
|
|
49
|
-
}
|
|
50
|
-
const largestTypeIdx = sizeTypes[sizeTypes.length - 1].type;
|
|
51
|
-
if (currentSizeType.type >= largestTypeIdx) {
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
for (let index = currentSizeType.type; index < sizeTypes.length; index++) {
|
|
55
|
-
const sizeType = sizeTypes[index];
|
|
56
|
-
data = dataConfig[sizeType.name];
|
|
57
|
-
if (data !== undefined) {
|
|
58
|
-
return data;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return undefined;
|
|
62
|
-
}
|
|
63
|
-
function matchWithSmallerMatch(dataConfig, currentSizeType, sizeTypes) {
|
|
64
|
-
let data = dataConfig[currentSizeType.name];
|
|
65
|
-
if (data !== undefined) {
|
|
66
|
-
return data;
|
|
67
|
-
}
|
|
68
|
-
if (currentSizeType.type <= 0) {
|
|
69
|
-
return undefined;
|
|
70
|
-
}
|
|
71
|
-
// eslint-disable-next-line for-direction
|
|
72
|
-
for (let index = currentSizeType.type; index < sizeTypes.length; index--) {
|
|
73
|
-
const sizeType = sizeTypes[index];
|
|
74
|
-
data = dataConfig[sizeType.name];
|
|
75
|
-
if (data !== undefined) {
|
|
76
|
-
return data;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
function matchWithClosestSmallerFirstMatch(dataConfig, currentSizeType, sizeTypes) {
|
|
82
|
-
return closestMatch(dataConfig, currentSizeType, sizeTypes, true);
|
|
83
|
-
}
|
|
84
|
-
function matchWithClosestLargerFirstMatch(dataConfig, currentSizeType, sizeTypes) {
|
|
85
|
-
return closestMatch(dataConfig, currentSizeType, sizeTypes, false);
|
|
86
|
-
}
|
|
87
|
-
function closestMatch(dataConfig, currentSizeType, sizeTypes, isSmallerFirst) {
|
|
88
|
-
let data = dataConfig[currentSizeType.name];
|
|
89
|
-
if (data !== undefined) {
|
|
90
|
-
return data;
|
|
91
|
-
}
|
|
92
|
-
let downIndex = currentSizeType.type;
|
|
93
|
-
let upIndex = currentSizeType.type;
|
|
94
|
-
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
95
|
-
for (let index = 0; index < sizeTypes.length; index++) {
|
|
96
|
-
for (const idx of isSmallerFirst ? [--downIndex, ++upIndex] : [++upIndex, --downIndex]) {
|
|
97
|
-
const sizeType = sizeTypes[idx];
|
|
98
|
-
if (sizeType) {
|
|
99
|
-
data = dataConfig[sizeType.name];
|
|
100
|
-
if (data !== undefined) {
|
|
101
|
-
return data;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return undefined;
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS1tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IkM6L2Rldi9naXQvQHNzdi5uZ3gudXgvc3JjLyIsInNvdXJjZXMiOlsidmlld3BvcnQvdmlld3BvcnQtZGF0YS92aWV3cG9ydC1kYXRhLW1hdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxDQUFOLElBQVkseUJBZVg7QUFmRCxXQUFZLHlCQUF5QjtJQUNwQyx5REFBeUQ7SUFDekQsMkVBQUssQ0FBQTtJQUVMLDJGQUEyRjtJQUMzRiwrRUFBTyxDQUFBO0lBRVAsd0ZBQXdGO0lBQ3hGLDZFQUFNLENBQUE7SUFFTixtSUFBbUk7SUFDbkksdUdBQW1CLENBQUE7SUFFbkIsa0lBQWtJO0lBQ2xJLHFHQUFrQixDQUFBO0FBQ25CLENBQUMsRUFmVyx5QkFBeUIsS0FBekIseUJBQXlCLFFBZXBDO0FBWUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUNoQyxVQUFpQyxFQUNqQyxRQUE4QixFQUM5QixRQUFtQyxFQUNuQyxTQUFpQyxFQUNqQyxXQUE2QztJQUU3QyxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ2IsTUFBTSxLQUFLLENBQUMseUVBQXlFLFFBQVEsR0FBRyxDQUFDLENBQUM7S0FDbEc7SUFDRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFNLENBQUM7SUFDeEUsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0tBQ1o7SUFDRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDM0IsQ0FBQztBQUdELE1BQU0sdUJBQXVCLEdBQW9DO0lBQ2hFLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEVBQUUsY0FBYztJQUNqRCxDQUFDLHlCQUF5QixDQUFDLE1B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TyxJQUFJLENBQUM7S0FDWjtJQUVELElBQUksU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDckMsSUFBSSxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQztJQUVuQyw0REFBNEQ7SUFDNUQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZGLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLFFBQVEsRUFBRTtnQkFDYixJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO29CQUN2QixPQUFPLElBQUksQ0FBQztpQkFDWjthQUNEO1NBQ0Q7S0FDRDtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uLy4uL2ludGVybmFsL2ludGVybmFsLm1vZGVsXCI7XHJcbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm1vZGVsXCI7XHJcblxyXG5leHBvcnQgdHlwZSBWaWV3cG9ydERhdGFDb25maWc8VFZhbHVlID0gdW5rbm93biwgVERhdGEgPSBEaWN0aW9uYXJ5PFRWYWx1ZT4+ID0gVERhdGEgJiB7XHJcblx0ZGVmYXVsdD86IFRWYWx1ZVxyXG59O1xyXG5cclxuZXhwb3J0IGVudW0gVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSB7XHJcblx0LyoqIEluZGljYXRlcyB0aGF0IHNpemUgc2hvdWxkIG1hdGNoIGV4YWN0IG9yIGRlZmF1bHQuICovXHJcblx0ZXhhY3QsXHJcblxyXG5cdC8qKiBJbmRpY2F0ZXMgdGhhdCBzaXplIG1hdGNoZXMgd2hlbiBleGFjdCBtYXRjaCwgZmlyc3QgbWF0Y2ggc21hbGxlciAoZG93bikgb3IgZGVmYXVsdC4gKi9cclxuXHRzbWFsbGVyLFxyXG5cclxuXHQvKiogSW5kaWNhdGVzIHRoYXQgc2l6ZSBtYXRjaGVzIHdoZW4gZXhhY3QgbWF0Y2gsIGZpcnN0IG1hdGNoIGxhcmdlciAodXApIG9yIGRlZmF1bHQuICovXHJcblx0bGFyZ2VyLFxyXG5cclxuXHQvKiogSW5kaWNhdGVzIHRoYXQgc2l6ZSBtYXRjaGVzIHdoZW4gZXhhY3QgbWF0Y2gsIG9yIGl0IHRyaWVzIGJvdGggc21hbGxlci9sYXJnZXIgKHNtYWxsZXIgaXMgcHJlZmVycmVkKSB1bnRpbCBtYXRjaCBvciBkZWZhdWx0LiAqL1xyXG5cdGNsb3Nlc3RTbWFsbGVyRmlyc3QsXHJcblxyXG5cdC8qKiBJbmRpY2F0ZXMgdGhhdCBzaXplIG1hdGNoZXMgd2hlbiBleGFjdCBtYXRjaCwgb3IgaXQgdHJpZXMgYm90aCBsYXJnZXIvc21hbGxlciAobGFyZ2VyIGlzIHByZWZlcnJlZCkgdW50aWwgbWF0Y2ggb3IgZGVmYXVsdC4gKi9cclxuXHRjbG9zZXN0TGFyZ2VyRmlyc3QsXHJcbn1cclxuZXhwb3J0IHR5cGUgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneUxpdGVyYWwgPSBrZXlvZiB0eXBlb2YgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnREYXRhTWF0Y2hlcjxUID0gdW5rbm93bj4ge1xyXG5cdChcclxuXHRcdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcclxuXHRcdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXHJcblx0XHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXHJcblx0XHRzaXplVHlwZU1hcDogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz4sXHJcblx0KTogVCB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gbWF0Y2ggZGF0YSBiYXNlZCBvbiBzdHJhdGVneSBhbmQgc2l6ZS5cclxuICpcclxuICogQHBhcmFtIGRhdGFDb25maWcgRGF0YSBjb25maWcgdG8gZ2VuZXJhdGUgcnVsZXMgYmFzZWQgb24uXHJcbiAqIEBwYXJhbSBzaXplVHlwZSBTaXplIHR5cGUgdG8gZ2V0IGRhdGEgZm9yLlxyXG4gKiBAcGFyYW0gc3RyYXRlZ3kgU3RyYXRlZ3kgdG8gdXNlIHdoZW4gYnVpbGRpbmcgcnVsZXMuXHJcbiAqIEBwYXJhbSBzaXplVHlwZXMgQXZhaWxhYmxlIHNpemUgdHlwZXMgb3JkZXJlZCBieSBpbmRleCB0eXBlLiAoQ2FuIGJlIG9idGFpbmVkIGZyb20gYFZpZXdwb3J0U2VydmljZWApXHJcbiAqIEBwYXJhbSBzaXplVHlwZU1hcCBBdmFpbGFibGUgc2l6ZSB0eXBlIG1hcC4gKENhbiBiZSBvYnRhaW5lZCBmcm9tIGBWaWV3cG9ydFNlcnZpY2VgKVxyXG4gKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBtYXRjaGVkIGRhdGEgdmFsdWUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hWaWV3cG9ydERhdGE8VD4oXHJcblx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxyXG5cdHNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSxcclxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXHJcblx0c2l6ZVR5cGVNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+LFxyXG4pOiBUIHwgdW5kZWZpbmVkIHtcclxuXHRjb25zdCBtYXRjaEZuID0gbWF0Y2hTdHJhdGVneUhhbmRsZXJNYXBbc3RyYXRlZ3ldO1xyXG5cdGlmICghbWF0Y2hGbikge1xyXG5cdFx0dGhyb3cgRXJyb3IoYG1hdGNoVmlld3BvcnREYXRhOiBWaWV3cG9ydCBEYXRhIHN0cmF0ZWd5IG5vdCBpbXBsZW1lbnRlZC4gU3RyYXRlZ3k6ICcke3N0cmF0ZWd5fSdgKTtcclxuXHR9XHJcblx0Y29uc3QgZGF0YSA9IG1hdGNoRm4oZGF0YUNvbmZpZywgc2l6ZVR5cGUsIHNpemVUeXBlcywgc2l6ZVR5cGVNYXApIGFzIFQ7XHJcblx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0cmV0dXJuIGRhdGE7XHJcblx0fVxyXG5cdHJldHVybiBkYXRhQ29uZmlnLmRlZmF1bHQ7XHJcbn1cclxuXHJcblxyXG5jb25zdCBtYXRjaFN0cmF0ZWd5SGFuZGxlck1hcDogRGljdGlvbmFyeTxWaWV3cG9ydERhdGFNYXRjaGVyPiA9IHtcclxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5leGFjdF06IG1hdGNoV2l0aEV4YWN0LFxyXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5Lmxhcmdlcl06IG1hdGNoV2l0aExhcmdlck1hdGNoLFxyXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LnNtYWxsZXJdOiBtYXRjaFdpdGhTbWFsbGVyTWF0Y2gsXHJcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuY2xvc2VzdFNtYWxsZXJGaXJzdF06IG1hdGNoV2l0aENsb3Nlc3RTbWFsbGVyRmlyc3RNYXRjaCxcclxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5jbG9zZXN0TGFyZ2VyRmlyc3RdOiBtYXRjaFdpdGhDbG9zZXN0TGFyZ2VyRmlyc3RNYXRjaCxcclxufTtcclxuXHJcbmZ1bmN0aW9uIG1hdGNoV2l0aEV4YWN0PFQ+KFxyXG5cdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcclxuXHRjdXJyZW50U2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxyXG4pOiBUIHwgdW5kZWZpbmVkIHtcclxuXHRyZXR1cm4gZGF0YUNvbmZpZ1tjdXJyZW50U2l6ZVR5cGUubmFtZV07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hdGNoV2l0aExhcmdlck1hdGNoPFQ+KFxyXG5cdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcclxuXHRjdXJyZW50U2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxyXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcclxuKTogVCB8IHVuZGVmaW5lZCB7XHJcblx0bGV0IGRhdGEgPSBkYXRhQ29uZmlnW2N1cnJlbnRTaXplVHlwZS5uYW1lXTtcclxuXHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRyZXR1cm4gZGF0YTtcclxuXHR9XHJcblxyXG5cdGNvbnN0IGxhcmdlc3RUeXBlSWR4ID0gc2l6ZVR5cGVzW3NpemVUeXBlcy5sZW5ndGggLSAxXS50eXBlO1xyXG5cdGlmIChjdXJyZW50U2l6ZVR5cGUudHlwZSA+PSBsYXJnZXN0VHlwZUlkeCkge1xyXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcclxuXHR9XHJcblxyXG5cdGZvciAobGV0IGluZGV4ID0gY3VycmVudFNpemVUeXBlLnR5cGU7IGluZGV4IDwgc2l6ZVR5cGVzLmxlbmd0aDsgaW5kZXgrKykge1xyXG5cdFx0Y29uc3Qgc2l6ZVR5cGUgPSBzaXplVHlwZXNbaW5kZXhdO1xyXG5cdFx0ZGF0YSA9IGRhdGFDb25maWdbc2l6ZVR5cGUubmFtZV07XHJcblx0XHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHJldHVybiBkYXRhO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIHVuZGVmaW5lZDtcclxufVxyXG5cclxuZnVuY3Rpb24gbWF0Y2hXaXRoU21hbGxlck1hdGNoPFQ+KFxyXG5cdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcclxuXHRjdXJyZW50U2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxyXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcclxuKTogVCB8IHVuZGVmaW5lZCB7XHJcblx0bGV0IGRhdGEgPSBkYXRhQ29uZmlnW2N1cnJlbnRTaXplVHlwZS5uYW1lXTtcclxuXHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRyZXR1cm4gZGF0YTtcclxuXHR9XHJcblxyXG5cdGlmIChjdXJyZW50U2l6ZVR5cGUudHlwZSA8PSAwKSB7XHJcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xyXG5cdH1cclxuXHJcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZvci1kaXJlY3Rpb25cclxuXHRmb3IgKGxldCBpbmRleCA9IGN1cnJlbnRTaXplVHlwZS50eXBlOyBpbmRleCA8IHNpemVUeXBlcy5sZW5ndGg7IGluZGV4LS0pIHtcclxuXHRcdGNvbnN0IHNpemVUeXBlID0gc2l6ZVR5cGVzW2luZGV4XTtcclxuXHRcdGRhdGEgPSBkYXRhQ29uZmlnW3NpemVUeXBlLm5hbWVdO1xyXG5cdFx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRyZXR1cm4gZGF0YTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hdGNoV2l0aENsb3Nlc3RTbWFsbGVyRmlyc3RNYXRjaDxUPihcclxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXHJcblx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXHJcbik6IFQgfCB1bmRlZmluZWQge1xyXG5cdHJldHVybiBjbG9zZXN0TWF0Y2goZGF0YUNvbmZpZywgY3VycmVudFNpemVUeXBlLCBzaXplVHlwZXMsIHRydWUpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYXRjaFdpdGhDbG9zZXN0TGFyZ2VyRmlyc3RNYXRjaDxUPihcclxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXHJcblx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXHJcbik6IFQgfCB1bmRlZmluZWQge1xyXG5cdHJldHVybiBjbG9zZXN0TWF0Y2goZGF0YUNvbmZpZywgY3VycmVudFNpemVUeXBlLCBzaXplVHlwZXMsIGZhbHNlKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2xvc2VzdE1hdGNoPFQ+KFxyXG5cdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcclxuXHRjdXJyZW50U2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxyXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcclxuXHRpc1NtYWxsZXJGaXJzdDogYm9vbGVhblxyXG4pOiBUIHwgdW5kZWZpbmVkIHtcclxuXHRsZXQgZGF0YSA9IGRhdGFDb25maWdbY3VycmVudFNpemVUeXBlLm5hbWVdO1xyXG5cdGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdHJldHVybiBkYXRhO1xyXG5cdH1cclxuXHJcblx0bGV0IGRvd25JbmRleCA9IGN1cnJlbnRTaXplVHlwZS50eXBlO1xyXG5cdGxldCB1cEluZGV4ID0gY3VycmVudFNpemVUeXBlLnR5cGU7XHJcblxyXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLWZvci1vZlxyXG5cdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzaXplVHlwZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcblx0XHRmb3IgKGNvbnN0IGlkeCBvZiBpc1NtYWxsZXJGaXJzdCA/IFstLWRvd25JbmRleCwgKyt1cEluZGV4XSA6IFsrK3VwSW5kZXgsIC0tZG93bkluZGV4XSkge1xyXG5cdFx0XHRjb25zdCBzaXplVHlwZSA9IHNpemVUeXBlc1tpZHhdO1xyXG5cdFx0XHRpZiAoc2l6ZVR5cGUpIHtcclxuXHRcdFx0XHRkYXRhID0gZGF0YUNvbmZpZ1tzaXplVHlwZS5uYW1lXTtcclxuXHRcdFx0XHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiB1bmRlZmluZWQ7XHJcbn1cclxuIl19
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Subscription } from "rxjs";
|
|
2
|
-
import { tap } from "rxjs/operators";
|
|
3
|
-
import { Pipe, ChangeDetectorRef } from "@angular/core";
|
|
4
|
-
import { ViewportDataMatchStrategy } from "./viewport-data-matcher";
|
|
5
|
-
import { ViewportDataService } from "./viewport-data.service";
|
|
6
|
-
/* eslint-disable @angular-eslint/no-pipe-impure */
|
|
7
|
-
export class ViewportDataPipe {
|
|
8
|
-
constructor(viewportData, cdr) {
|
|
9
|
-
this.viewportData = viewportData;
|
|
10
|
-
this.cdr = cdr;
|
|
11
|
-
this.markForTransform = true;
|
|
12
|
-
this.data$$ = Subscription.EMPTY;
|
|
13
|
-
}
|
|
14
|
-
transform(data, strategy) {
|
|
15
|
-
if (!this.markForTransform && data === this.data && strategy === this.strategy) {
|
|
16
|
-
return this.value;
|
|
17
|
-
}
|
|
18
|
-
this.data = data;
|
|
19
|
-
this.strategy = strategy;
|
|
20
|
-
this.data$$.unsubscribe();
|
|
21
|
-
this.data$$ = this.viewportData.get$(data, ViewportDataMatchStrategy[strategy]).pipe(tap(value => {
|
|
22
|
-
this.markForTransform = true;
|
|
23
|
-
this.value = value;
|
|
24
|
-
this.cdr.markForCheck();
|
|
25
|
-
})).subscribe();
|
|
26
|
-
this.markForTransform = false;
|
|
27
|
-
return this.value;
|
|
28
|
-
}
|
|
29
|
-
ngOnDestroy() {
|
|
30
|
-
this.data$$.unsubscribe();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
ViewportDataPipe.decorators = [
|
|
34
|
-
{ type: Pipe, args: [{
|
|
35
|
-
name: "ssvViewportData",
|
|
36
|
-
pure: false
|
|
37
|
-
},] }
|
|
38
|
-
];
|
|
39
|
-
ViewportDataPipe.ctorParameters = () => [
|
|
40
|
-
{ type: ViewportDataService },
|
|
41
|
-
{ type: ChangeDetectorRef }
|
|
42
|
-
];
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS5waXBlLmpzIiwic291cmNlUm9vdCI6IkM6L2Rldi9naXQvQHNzdi5uZ3gudXgvc3JjLyIsInNvdXJjZXMiOlsidmlld3BvcnQvdmlld3BvcnQtZGF0YS92aWV3cG9ydC1kYXRhLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLElBQUksRUFBNEIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFzQix5QkFBeUIsRUFBb0MsTUFBTSx5QkFBeUIsQ0FBQztBQUMxSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxtREFBbUQ7QUFLbkQsTUFBTSxPQUFPLGdCQUFnQjtJQVE1QixZQUNTLFlBQWlDLEVBQ2pDLEdBQXNCO1FBRHRCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVJ2QixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFJeEIsV0FBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFNcEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUF3QixFQUFFLFFBQTBDO1FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkYsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUNGLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFZCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7O1lBeENELElBQUksU0FBQztnQkFDTCxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixJQUFJLEVBQUUsS0FBSzthQUNYOzs7WUFOUSxtQkFBbUI7WUFIYSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBWaWV3cG9ydERhdGFDb25maWcsIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3ksIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3lMaXRlcmFsIH0gZnJvbSBcIi4vdmlld3BvcnQtZGF0YS1tYXRjaGVyXCI7XHJcbmltcG9ydCB7IFZpZXdwb3J0RGF0YVNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLnNlcnZpY2VcIjtcclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1waXBlLWltcHVyZSAqL1xyXG5AUGlwZSh7XHJcblx0bmFtZTogXCJzc3ZWaWV3cG9ydERhdGFcIixcclxuXHRwdXJlOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlld3BvcnREYXRhUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XHJcblxyXG5cdHByaXZhdGUgbWFya0ZvclRyYW5zZm9ybSA9IHRydWU7XHJcblx0cHJpdmF0ZSB2YWx1ZTogdW5rbm93bjtcclxuXHRwcml2YXRlIGRhdGE6IFZpZXdwb3J0RGF0YUNvbmZpZyB8IHVuZGVmaW5lZDtcclxuXHRwcml2YXRlIHN0cmF0ZWd5OiBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5TGl0ZXJhbCB8IHVuZGVmaW5lZDtcclxuXHRwcml2YXRlIGRhdGEkJCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHZpZXdwb3J0RGF0YTogVmlld3BvcnREYXRhU2VydmljZSxcclxuXHRcdHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG5cdCkge1xyXG5cdH1cclxuXHJcblx0dHJhbnNmb3JtKGRhdGE6IFZpZXdwb3J0RGF0YUNvbmZpZywgc3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3lMaXRlcmFsKTogdW5rbm93biB7XHJcblx0XHRpZiAoIXRoaXMubWFya0ZvclRyYW5zZm9ybSAmJiBkYXRhID09PSB0aGlzLmRhdGEgJiYgc3RyYXRlZ3kgPT09IHRoaXMuc3RyYXRlZ3kpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudmFsdWU7XHJcblx0XHR9XHJcblx0XHR0aGlzLmRhdGEgPSBkYXRhO1xyXG5cdFx0dGhpcy5zdHJhdGVneSA9IHN0cmF0ZWd5O1xyXG5cclxuXHRcdHRoaXMuZGF0YSQkLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR0aGlzLmRhdGEkJCA9IHRoaXMudmlld3BvcnREYXRhLmdldCQoZGF0YSwgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneVtzdHJhdGVneV0pLnBpcGUoXHJcblx0XHRcdHRhcCh2YWx1ZSA9PiB7XHJcblx0XHRcdFx0dGhpcy5tYXJrRm9yVHJhbnNmb3JtID0gdHJ1ZTtcclxuXHRcdFx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XHJcblx0XHRcdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdH0pLFxyXG5cdFx0KS5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHR0aGlzLm1hcmtGb3JUcmFuc2Zvcm0gPSBmYWxzZTtcclxuXHRcdHJldHVybiB0aGlzLnZhbHVlO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHR0aGlzLmRhdGEkJC51bnN1YnNjcmliZSgpO1xyXG5cdH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from "@angular/core";
|
|
2
|
-
import { distinctUntilChanged, map } from "rxjs/operators";
|
|
3
|
-
import { UX_CONFIG } from "../../config";
|
|
4
|
-
import { ViewportService } from "../viewport.service";
|
|
5
|
-
import { matchViewportData } from "./viewport-data-matcher";
|
|
6
|
-
import { generateViewportRulesRangeFromDataMatcher } from "./viewport-data.utils";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../viewport.service";
|
|
9
|
-
import * as i2 from "../../config";
|
|
10
|
-
export class ViewportDataService {
|
|
11
|
-
constructor(viewport, config) {
|
|
12
|
-
this.viewport = viewport;
|
|
13
|
-
this.config = config;
|
|
14
|
-
}
|
|
15
|
-
/** Get data for match. */
|
|
16
|
-
get(dataConfig, strategy = this.config.viewport.defaultDataMatchStrategy, sizeType = this.viewport.sizeTypeSnapshot) {
|
|
17
|
-
return matchViewportData(dataConfig, sizeType, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);
|
|
18
|
-
}
|
|
19
|
-
/** Get data for match as observable. */
|
|
20
|
-
get$(dataConfig, strategy, throttle = true) {
|
|
21
|
-
return (throttle ? this.viewport.sizeType$ : this.viewport.sizeTypeSnap$).pipe(map(sizeType => this.get(dataConfig, strategy, sizeType)), distinctUntilChanged());
|
|
22
|
-
}
|
|
23
|
-
/** Generate rules based on strategies for data. */
|
|
24
|
-
generateRules(dataConfig, strategy = this.config.viewport.defaultDataMatchStrategy) {
|
|
25
|
-
return generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
ViewportDataService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ViewportDataService_Factory() { return new ViewportDataService(i0.ɵɵinject(i1.ViewportService), i0.ɵɵinject(i2.UX_CONFIG)); }, token: ViewportDataService, providedIn: "root" });
|
|
29
|
-
ViewportDataService.decorators = [
|
|
30
|
-
{ type: Injectable, args: [{
|
|
31
|
-
providedIn: "root",
|
|
32
|
-
},] }
|
|
33
|
-
];
|
|
34
|
-
ViewportDataService.ctorParameters = () => [
|
|
35
|
-
{ type: ViewportService },
|
|
36
|
-
{ type: undefined, decorators: [{ type: Inject, args: [UX_CONFIG,] }] }
|
|
37
|
-
];
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L2Rldi9naXQvQHNzdi5uZ3gudXgvc3JjLyIsInNvdXJjZXMiOlsidmlld3BvcnQvdmlld3BvcnQtZGF0YS92aWV3cG9ydC1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFHcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBaUQsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUseUNBQXlDLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFLcEcsTUFBTSxPQUFPLG1CQUFtQjtJQUUvQixZQUNTLFFBQXlCLEVBQ04sTUFBaUI7UUFEcEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDTixXQUFNLEdBQU4sTUFBTSxDQUFXO0lBRTdDLENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsR0FBRyxDQUNGLFVBQWlDLEVBQ2pDLFdBQXNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUNuRixXQUFpQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtRQUUvRCxPQUFPLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxJQUFJLENBQUksVUFBaUMsRUFBRSxRQUFvQyxFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDN0UsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQzVELG9CQUFvQixFQUFFLENBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELGFBQWEsQ0FDWixVQUFpQyxFQUNqQyxXQUFzQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0I7UUFFbkYsT0FBTyx5Q0FBeUMsQ0FDL0MsVUFBVSxFQUNWLFFBQVEsRUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3pCLENBQUM7SUFDSCxDQUFDOzs7O1lBdkNELFVBQVUsU0FBQztnQkFDWCxVQUFVLEVBQUUsTUFBTTthQUNsQjs7O1lBTlEsZUFBZTs0Q0FXckIsTUFBTSxTQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBVWF9DT05GSUcsIFV4T3B0aW9ucyB9IGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuXHJcbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gXCIuLi92aWV3cG9ydC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IG1hdGNoVmlld3BvcnREYXRhLCBWaWV3cG9ydERhdGFDb25maWcsIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLW1hdGNoZXJcIjtcclxuaW1wb3J0IHsgZ2VuZXJhdGVWaWV3cG9ydFJ1bGVzUmFuZ2VGcm9tRGF0YU1hdGNoZXIsIFZpZXdwb3J0RGF0YVJ1bGUgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLnV0aWxzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydERhdGFTZXJ2aWNlIHtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHZpZXdwb3J0OiBWaWV3cG9ydFNlcnZpY2UsXHJcblx0XHRASW5qZWN0KFVYX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFV4T3B0aW9ucyxcclxuXHQpIHtcclxuXHR9XHJcblxyXG5cdC8qKiBHZXQgZGF0YSBmb3IgbWF0Y2guICovXHJcblx0Z2V0PFQ+KFxyXG5cdFx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxyXG5cdFx0c3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kgPSB0aGlzLmNvbmZpZy52aWV3cG9ydC5kZWZhdWx0RGF0YU1hdGNoU3RyYXRlZ3ksXHJcblx0XHRzaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8gPSB0aGlzLnZpZXdwb3J0LnNpemVUeXBlU25hcHNob3RcclxuXHQpOiBUIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiBtYXRjaFZpZXdwb3J0RGF0YShkYXRhQ29uZmlnLCBzaXplVHlwZSwgc3RyYXRlZ3ksIHRoaXMudmlld3BvcnQuc2l6ZVR5cGVzLCB0aGlzLnZpZXdwb3J0LnNpemVUeXBlTWFwKTtcclxuXHR9XHJcblxyXG5cdC8qKiBHZXQgZGF0YSBmb3IgbWF0Y2ggYXMgb2JzZXJ2YWJsZS4gKi9cclxuXHRnZXQkPFQ+KGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPiwgc3RyYXRlZ3k/OiBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LCB0aHJvdHRsZSA9IHRydWUpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcclxuXHRcdHJldHVybiAodGhyb3R0bGUgPyB0aGlzLnZpZXdwb3J0LnNpemVUeXBlJCA6IHRoaXMudmlld3BvcnQuc2l6ZVR5cGVTbmFwJCkucGlwZShcclxuXHRcdFx0bWFwKHNpemVUeXBlID0+IHRoaXMuZ2V0PFQ+KGRhdGFDb25maWcsIHN0cmF0ZWd5LCBzaXplVHlwZSkpLFxyXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBHZW5lcmF0ZSBydWxlcyBiYXNlZCBvbiBzdHJhdGVnaWVzIGZvciBkYXRhLiAqL1xyXG5cdGdlbmVyYXRlUnVsZXM8VD4oXHJcblx0XHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXHJcblx0XHRzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSA9IHRoaXMuY29uZmlnLnZpZXdwb3J0LmRlZmF1bHREYXRhTWF0Y2hTdHJhdGVneSxcclxuXHQpOiBWaWV3cG9ydERhdGFSdWxlPFQ+W10ge1xyXG5cdFx0cmV0dXJuIGdlbmVyYXRlVmlld3BvcnRSdWxlc1JhbmdlRnJvbURhdGFNYXRjaGVyKFxyXG5cdFx0XHRkYXRhQ29uZmlnLFxyXG5cdFx0XHRzdHJhdGVneSxcclxuXHRcdFx0dGhpcy52aWV3cG9ydC5zaXplVHlwZXMsXHJcblx0XHRcdHRoaXMudmlld3BvcnQuc2l6ZVR5cGVNYXBcclxuXHRcdCk7XHJcblx0fVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,100 +0,0 @@
|
|
|
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 === null || prevRule === void 0 ? void 0 : 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 === null || prevRule === void 0 ? void 0 : 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiJDOi9kZXYvZ2l0L0Bzc3Yubmd4LnV4L3NyYy8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXNCLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFReEY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUseUNBQXlDLENBQ3hELFVBQWlDLEVBQ2pDLFFBQW1DLEVBQ25DLFNBQWlDLEVBQ2pDLFdBQTZDO0lBRTdDLE1BQU0sYUFBYSxHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDbkIsTUFBTSxLQUFLLENBQUMsaUdBQWlHLFFBQVEsR0FBRyxDQUFDLENBQUM7S0FDMUg7SUFFRCxJQUFJLFNBQVMsR0FBMkIsRUFBRSxDQUFDO0lBQzNDLEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO1FBQzdCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUMxRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUN2QixTQUFTO2FBQ1Q7WUFDRCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsSUFBSSxJQUFJLEVBQUU7Z0JBQ1QsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNyQjtTQUNEO0tBQ0Q7SUFDRCxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FB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RyxTQUFTLENBQUMsQ0FBQztJQUMxRCxPQUFPLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi8uLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBWaWV3cG9ydFNpemVUeXBlSW5mbyB9IGZyb20gXCIuLi92aWV3cG9ydC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBWaWV3cG9ydERhdGFDb25maWcsIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLW1hdGNoZXJcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnREYXRhUnVsZTxUPiB7XHJcblx0bWluPzogbnVtYmVyO1xyXG5cdG1heD86IG51bWJlcjtcclxuXHR2YWx1ZTogVDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgcnVsZXMgYmFzZWQgb24gc3RyYXRlZ2llcy5cclxuICpcclxuICogQHBhcmFtIGRhdGFDb25maWcgRGF0YSBjb25maWcgdG8gZ2VuZXJhdGUgcnVsZXMgYmFzZWQgb24uXHJcbiAqIEBwYXJhbSBzdHJhdGVneSBTdHJhdGVneSB0byB1c2Ugd2hlbiBidWlsZGluZyBydWxlcy5cclxuICogQHBhcmFtIHNpemVUeXBlcyBBdmFpbGFibGUgc2l6ZSB0eXBlcyBvcmRlcmVkIGJ5IGluZGV4IHR5cGUuIChDYW4gYmUgb2J0YWluZWQgZnJvbSBgVmlld3BvcnRTZXJ2aWNlYClcclxuICogQHBhcmFtIHNpemVUeXBlTWFwIEF2YWlsYWJsZSBzaXplIHR5cGUgbWFwLiAoQ2FuIGJlIG9idGFpbmVkIGZyb20gYFZpZXdwb3J0U2VydmljZWApXHJcbiAqIEByZXR1cm5zIFJldHVybnMgYSBjb2xsZWN0aW9uIG9mIHJ1bGVzIChvcmRlcmVkKS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVZpZXdwb3J0UnVsZXNSYW5nZUZyb21EYXRhTWF0Y2hlcjxUPihcclxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXHJcblx0c3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3ksXHJcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxyXG5cdHNpemVUeXBlTWFwOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPixcclxuKTogVmlld3BvcnREYXRhUnVsZTxUPltdIHtcclxuXHRjb25zdCBydWxlQnVpbGRlckZuID0gbWF0Y2hTdHJhdGVneUhhbmRsZXJNYXBbc3RyYXRlZ3ldO1xyXG5cdGlmICghcnVsZUJ1aWxkZXJGbikge1xyXG5cdFx0dGhyb3cgRXJyb3IoYGdlbmVyYXRlVmlld3BvcnRSdWxlc1JhbmdlRnJvbURhdGFNYXRjaGVyOiBWaWV3cG9ydCBEYXRhIHN0cmF0ZWd5IG5vdCBpbXBsZW1lbnRlZC4gU3RyYXRlZ3k6ICcke3N0cmF0ZWd5fSdgKTtcclxuXHR9XHJcblxyXG5cdGxldCBkYXRhU2l6ZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10gPSBbXTtcclxuXHRmb3IgKGNvbnN0IGtleSBpbiBkYXRhQ29uZmlnKSB7XHJcblx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGFDb25maWcsIGtleSkpIHtcclxuXHRcdFx0Y29uc3QgZGF0YSA9IGRhdGFDb25maWdba2V5XTtcclxuXHRcdFx0aWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdGNvbnRpbnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IHNpemUgPSBzaXplVHlwZU1hcFtrZXldO1xyXG5cdFx0XHRpZiAoc2l6ZSkge1xyXG5cdFx0XHRcdGRhdGFTaXplcy5wdXNoKHNpemUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdGRhdGFTaXplcyA9IGRhdGFTaXplcy5zb3J0KCh7IHR5cGU6IHR5cGVBIH0sIHsgdHlwZTogdHlwZUIgfSkgPT4gdHlwZUEgLSB0eXBlQik7XHJcblxyXG5cdGNvbnN0IHJ1bGVzOiBWaWV3cG9ydERhdGFSdWxlPFQ+W10gPSBbXTtcclxuXHRpZiAoZGF0YUNvbmZpZy5kZWZhdWx0KSB7XHJcblx0XHRydWxlcy5wdXNoKHsgdmFsdWU6IGRhdGFDb25maWcuZGVmYXVsdCwgbWluOiB1bmRlZmluZWQsIG1heDogdW5kZWZpbmVkIH0pO1xyXG5cdH1cclxuXHJcblx0bGV0IHByZXZSdWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+IHwgdW5kZWZpbmVkO1xyXG5cdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhU2l6ZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcblx0XHRjb25zdCBwcmV2RGF0YVNpemUgPSBkYXRhU2l6ZXNbaW5kZXggLSAxXTtcclxuXHRcdGNvbnN0IG5leHREYXRhU2l6ZSA9IGRhdGFTaXplc1tpbmRleCArIDFdO1xyXG5cdFx0Y29uc3QgZGF0YVNpemUgPSBkYXRhU2l6ZXNbaW5kZXhdO1xyXG5cdFx0Y29uc3QgcHJldlNpemUgPSBzaXplVHlwZXNbZGF0YVNpemUudHlwZSAtIDFdO1xyXG5cdFx0Ly8gY29uc3QgbmV4dFNpemUgPSBzaXplVHlwZXNbZGF0YVNpemUudHlwZSArIDFdO1xyXG5cdFx0Y29uc3QgZGF0YSA9IGRhdGFDb25maWdbZGF0YVNpemUubmFtZV07XHJcblx0XHRjb25zdCBydWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+ID0ge1xyXG5cdFx0XHR2YWx1ZTogZGF0YSxcclxuXHRcdFx0bWluOiB1bmRlZmluZWQsXHJcblx0XHRcdG1heDogdW5kZWZpbmVkLFxyXG5cdFx0fTtcclxuXHJcblx0XHRydWxlQnVpbGRlckZuKHJ1bGUsIGRhdGFTaXplLCBuZXh0RGF0YVNpemUsIHByZXZEYXRhU2l6ZSwgcHJldlNpemUsIHByZXZSdWxlLCBzaXplVHlwZXMpO1xyXG5cclxuXHRcdHByZXZSdWxlID0gcnVsZTtcclxuXHRcdHJ1bGVzLnB1c2gocnVsZSk7XHJcblx0fVxyXG5cdHJldHVybiBydWxlcztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydFJ1bGVSYW5nZUJ1aWxkZXI8VCA9IHVua25vd24+IHtcclxuXHQoXHJcblx0XHRydWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+LFxyXG5cdFx0ZGF0YVNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxyXG5cdFx0bmV4dERhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyB8IHVuZGVmaW5lZCxcclxuXHRcdHByZXZEYXRhU2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8gfCB1bmRlZmluZWQsXHJcblx0XHRwcmV2U2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8gfCB1bmRlZmluZWQsXHJcblx0XHRwcmV2UnVsZTogVmlld3BvcnREYXRhUnVsZTxUPiB8IHVuZGVmaW5lZCxcclxuXHRcdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcclxuXHQpOiB2b2lkO1xyXG59XHJcblxyXG5jb25zdCBtYXRjaFN0cmF0ZWd5SGFuZGxlck1hcDogRGljdGlvbmFyeTxWaWV3cG9ydFJ1bGVSYW5nZUJ1aWxkZXI+ID0ge1xyXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LmV4YWN0XTogKHJ1bGUsIGRhdGFTaXplLCBfbmV4dERhdGFTaXplLCBfcHJldkRhdGFTaXplLCBwcmV2U2l6ZSkgPT4ge1xyXG5cdFx0cnVsZS5tYXggPSBkYXRhU2l6ZS53aWR0aFRocmVzaG9sZDtcclxuXHRcdGlmIChwcmV2U2l6ZSkge1xyXG5cdFx0XHRydWxlLm1pbiA9IHByZXZTaXplLndpZHRoVGhyZXNob2xkICsgMTtcclxuXHRcdH1cclxuXHR9LFxyXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LnNtYWxsZXJdOiAocnVsZSwgZGF0YVNpemUsIG5leHREYXRhU2l6ZSwgX3ByZXZEYXRhU2l6ZSwgcHJldlNpemUpID0+IHtcclxuXHRcdGlmIChuZXh0RGF0YVNpemUpIHtcclxuXHRcdFx0cnVsZS5tYXggPSBkYXRhU2l6ZS53aWR0aFRocmVzaG9sZDtcclxuXHRcdH1cclxuXHRcdGlmIChwcmV2U2l6ZSkge1xyXG5cdFx0XHRydWxlLm1pbiA9IHByZXZTaXplLndpZHRoVGhyZXNob2xkICsgMTtcclxuXHRcdH1cclxuXHR9LFxyXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5Lmxhcmdlcl06IChydWxlLCBkYXRhU2l6ZSwgX25leHREYXRhU2l6ZSwgcHJldkRhdGFTaXplKSA9PiB7XHJcblx0XHRpZiAoZGF0YVNpemUpIHtcclxuXHRcdFx0cnVsZS5tYXggPSBkYXRhU2l6ZS53aWR0aFRocmVzaG9sZDtcclxuXHRcdH1cclxuXHRcdGlmIChwcmV2RGF0YVNpemUpIHtcclxuXHRcdFx0cnVsZS5taW4gPSBwcmV2RGF0YVNpemUud2lkdGhUaHJlc2hvbGQgKyAxO1xyXG5cdFx0fVxyXG5cdH0sXHJcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuY2xvc2VzdFNtYWxsZXJGaXJzdF06IChydWxlLCBkYXRhU2l6ZSwgbmV4dERhdGFTaXplLCBfcHJldkRhdGFTaXplLCBfcHJldlNpemUsIHByZXZSdWxlLCBzaXplVHlwZXMpID0+IHtcclxuXHRcdGlmIChuZXh0RGF0YVNpemUpIHtcclxuXHRcdFx0cnVsZS5tYXggPSBjYWxjdWxhdGVDbG9zZXN0V2lkdGhUaHJlc2hvbGQobmV4dERhdGFTaXplLCBkYXRhU2l6ZSwgc2l6ZVR5cGVzLCB0cnVlKTtcclxuXHRcdH1cclxuXHRcdGlmIChwcmV2UnVsZT8ubWF4KSB7XHJcblx0XHRcdHJ1bGUubWluID0gcHJldlJ1bGUubWF4ICsgMTtcclxuXHRcdH1cclxuXHR9LFxyXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LmNsb3Nlc3RMYXJnZXJGaXJzdF06IChydWxlLCBkYXRhU2l6ZSwgbmV4dERhdGFTaXplLCBfcHJldkRhdGFTaXplLCBfcHJldlNpemUsIHByZXZSdWxlLCBzaXplVHlwZXMpID0+IHtcclxuXHRcdGlmIChuZXh0RGF0YVNpemUpIHtcclxuXHRcdFx0cnVsZS5tYXggPSBjYWxjdWxhdGVDbG9zZXN0V2lkdGhUaHJlc2hvbGQobmV4dERhdGFTaXplLCBkYXRhU2l6ZSwgc2l6ZVR5cGVzLCBmYWxzZSk7XHJcblx0XHR9XHJcblx0XHRpZiAocHJldlJ1bGU/Lm1heCkge1xyXG5cdFx0XHRydWxlLm1pbiA9IHByZXZSdWxlLm1heCArIDE7XHJcblx0XHR9XHJcblx0fSxcclxufTtcclxuXHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZUNsb3Nlc3RXaWR0aFRocmVzaG9sZChcclxuXHRuZXh0RGF0YVNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxyXG5cdGRhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXHJcblx0aXNTbWFsbGVyUHJlZmVycmVkOiBib29sZWFuLFxyXG4pIHtcclxuXHRjb25zdCBmbiA9IGlzU21hbGxlclByZWZlcnJlZCA/IE1hdGguY2VpbCA6IE1hdGguZmxvb3I7XHJcblx0Ly8gZ2V0IGNsb3Nlc3QgYmV0d2VlbiBjdXJyIGFuZCBuZXh0XHJcblx0Y29uc3QgZGlmZkluZGV4ID0gZm4oKG5leHREYXRhU2l6ZS50eXBlIC0gZGF0YVNpemUudHlwZSAtIDEpIC8gMik7XHJcblx0Y29uc3QgZGlmZk5leHRTaXplID0gc2l6ZVR5cGVzW2RhdGFTaXplLnR5cGUgKyBkaWZmSW5kZXhdO1xyXG5cdHJldHVybiAoZGlmZk5leHRTaXplIHx8IGRhdGFTaXplKS53aWR0aFRocmVzaG9sZDtcclxufVxyXG4iXX0=
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, TemplateRef, ViewContainerRef, } from "@angular/core";
|
|
2
|
-
import { combineLatest, ReplaySubject, Subject } from "rxjs";
|
|
3
|
-
import { tap, map, takeUntil } from "rxjs/operators";
|
|
4
|
-
import { ViewportService } from "./viewport.service";
|
|
5
|
-
import { isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, isViewportConditionMatch } from "./viewport.util";
|
|
6
|
-
const NAME_CAMEL = "ssvViewportMatcherVar";
|
|
7
|
-
export class SsvViewportMatcherVarContext {
|
|
8
|
-
constructor($implicit = false) {
|
|
9
|
-
this.$implicit = $implicit;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export class SsvViewportMatcherVarDirective {
|
|
13
|
-
constructor(viewport, viewContainer, templateRef) {
|
|
14
|
-
this.viewport = viewport;
|
|
15
|
-
this.viewContainer = viewContainer;
|
|
16
|
-
this.templateRef = templateRef;
|
|
17
|
-
this._matchConditions = {};
|
|
18
|
-
this._context = new SsvViewportMatcherVarContext();
|
|
19
|
-
this._destroy$ = new Subject();
|
|
20
|
-
this._update$ = new ReplaySubject(1);
|
|
21
|
-
}
|
|
22
|
-
set condition(value) {
|
|
23
|
-
if (isViewportSizeMatcherExpression(value)) {
|
|
24
|
-
this._matchConditions.expression = value;
|
|
25
|
-
}
|
|
26
|
-
else if (isViewportSizeMatcherTupleExpression(value)) {
|
|
27
|
-
const [op, size] = value;
|
|
28
|
-
this._matchConditions.expression = {
|
|
29
|
-
operation: op,
|
|
30
|
-
size
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
this._matchConditions.sizeType = value;
|
|
35
|
-
}
|
|
36
|
-
this._update$.next();
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
this.updateView();
|
|
40
|
-
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();
|
|
41
|
-
}
|
|
42
|
-
ngOnDestroy() {
|
|
43
|
-
this._destroy$.next();
|
|
44
|
-
this._destroy$.complete();
|
|
45
|
-
}
|
|
46
|
-
updateView() {
|
|
47
|
-
this.viewContainer.clear();
|
|
48
|
-
this._viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this._context);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
SsvViewportMatcherVarDirective.decorators = [
|
|
52
|
-
{ type: Directive, args: [{
|
|
53
|
-
selector: `[${NAME_CAMEL}]`,
|
|
54
|
-
},] }
|
|
55
|
-
];
|
|
56
|
-
SsvViewportMatcherVarDirective.ctorParameters = () => [
|
|
57
|
-
{ type: ViewportService },
|
|
58
|
-
{ type: ViewContainerRef },
|
|
59
|
-
{ type: TemplateRef }
|
|
60
|
-
];
|
|
61
|
-
SsvViewportMatcherVarDirective.propDecorators = {
|
|
62
|
-
condition: [{ type: Input, args: [`${NAME_CAMEL}When`,] }]
|
|
63
|
-
};
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtbWF0Y2hlci12YXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IkM6L2Rldi9naXQvQHNzdi5uZ3gudXgvc3JjLyIsInNvdXJjZXMiOlsidmlld3BvcnQvdmlld3BvcnQtbWF0Y2hlci12YXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsR0FFaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQ04sK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNwQyx3QkFBd0IsRUFDeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixNQUFNLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQztBQUUzQyxNQUFNLE9BQU8sNEJBQTRCO0lBRXhDLFlBQ1EsWUFBWSxLQUFLO1FBQWpCLGNBQVMsR0FBVCxTQUFTLENBQVE7SUFDckIsQ0FBQztDQUVMO0FBS0QsTUFBTSxPQUFPLDhCQUE4QjtJQXdCMUMsWUFDUyxRQUF5QixFQUN6QixhQUErQixFQUMvQixXQUFzRDtRQUZ0RCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQTJDO1FBekJ2RCxxQkFBZ0IsR0FBNEIsRUFBRSxDQUFDO1FBQy9DLGFBQVEsR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7UUFDckMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFPLENBQUMsQ0FBQyxDQUFDO0lBd0J2RCxDQUFDO0lBckJELElBQWdDLFNBQVMsQ0FBQyxLQUF3RDtRQUNqRyxJQUFJLCtCQUErQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxvQ0FBb0MsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RCxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHO2dCQUNsQyxTQUFTLEVBQUUsRUFBRTtnQkFDYixJQUFJO2FBQ0osQ0FBQztTQUNGO2FBQU07WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQVNELFFBQVE7UUFDUCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRCxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDekcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQ3ZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ3pCLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sVUFBVTtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RixDQUFDOzs7WUFwREQsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxJQUFJLFVBQVUsR0FBRzthQUMzQjs7O1lBcEJRLGVBQWU7WUFOdkIsZ0JBQWdCO1lBRGhCLFdBQVc7Ozt3QkFvQ1YsS0FBSyxTQUFDLEdBQUcsVUFBVSxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRPbkluaXQsXHJcblx0T25EZXN0cm95LFxyXG5cdERpcmVjdGl2ZSxcclxuXHRJbnB1dCxcclxuXHRUZW1wbGF0ZVJlZixcclxuXHRWaWV3Q29udGFpbmVyUmVmLFxyXG5cdEVtYmVkZGVkVmlld1JlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFwLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld3BvcnQuc2VydmljZVwiO1xyXG5pbXBvcnQge1xyXG5cdGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24sXHJcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uLFxyXG5cdGlzVmlld3BvcnRDb25kaXRpb25NYXRjaFxyXG59IGZyb20gXCIuL3ZpZXdwb3J0LnV0aWxcIjtcclxuaW1wb3J0IHsgVmlld3BvcnRNYXRjaENvbmRpdGlvbnMsIFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcclxuXHJcbmNvbnN0IE5BTUVfQ0FNRUwgPSBcInNzdlZpZXdwb3J0TWF0Y2hlclZhclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNzdlZpZXdwb3J0TWF0Y2hlclZhckNvbnRleHQge1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyAkaW1wbGljaXQgPSBmYWxzZSxcclxuXHQpIHsgfVxyXG5cclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcblx0c2VsZWN0b3I6IGBbJHtOQU1FX0NBTUVMfV1gLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3N2Vmlld3BvcnRNYXRjaGVyVmFyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHRwcml2YXRlIF9tYXRjaENvbmRpdGlvbnM6IFZpZXdwb3J0TWF0Y2hDb25kaXRpb25zID0ge307XHJcblx0cHJpdmF0ZSBfY29udGV4dCA9IG5ldyBTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0KCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3VwZGF0ZSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcclxuXHRwcml2YXRlIF92aWV3UmVmITogRW1iZWRkZWRWaWV3UmVmPFNzdlZpZXdwb3J0TWF0Y2hlclZhckNvbnRleHQ+O1xyXG5cclxuXHRASW5wdXQoYCR7TkFNRV9DQU1FTH1XaGVuYCkgc2V0IGNvbmRpdGlvbih2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbikge1xyXG5cdFx0aWYgKGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24odmFsdWUpKSB7XHJcblx0XHRcdHRoaXMuX21hdGNoQ29uZGl0aW9ucy5leHByZXNzaW9uID0gdmFsdWU7XHJcblx0XHR9IGVsc2UgaWYgKGlzVmlld3BvcnRTaXplTWF0Y2hlclR1cGxlRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuXHRcdFx0Y29uc3QgW29wLCBzaXplXSA9IHZhbHVlO1xyXG5cdFx0XHR0aGlzLl9tYXRjaENvbmRpdGlvbnMuZXhwcmVzc2lvbiA9IHtcclxuXHRcdFx0XHRvcGVyYXRpb246IG9wLFxyXG5cdFx0XHRcdHNpemVcclxuXHRcdFx0fTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuX21hdGNoQ29uZGl0aW9ucy5zaXplVHlwZSA9IHZhbHVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuX3VwZGF0ZSQubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHZpZXdwb3J0OiBWaWV3cG9ydFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcblx0XHRwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0PixcclxuXHQpIHtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy51cGRhdGVWaWV3KCk7XHJcblx0XHRjb21iaW5lTGF0ZXN0KFt0aGlzLnZpZXdwb3J0LnNpemVUeXBlJCwgdGhpcy5fdXBkYXRlJF0pLnBpcGUoXHJcblx0XHRcdG1hcCgoW3NpemVUeXBlXSkgPT4gaXNWaWV3cG9ydENvbmRpdGlvbk1hdGNoKHNpemVUeXBlLCB0aGlzLl9tYXRjaENvbmRpdGlvbnMsIHRoaXMudmlld3BvcnQuc2l6ZVR5cGVNYXApKSxcclxuXHRcdFx0dGFwKHggPT4gdGhpcy5fY29udGV4dC4kaW1wbGljaXQgPSB4KSxcclxuXHRcdFx0dGFwKCgpID0+IHRoaXMuX3ZpZXdSZWYubWFya0ZvckNoZWNrKCkpLFxyXG5cdFx0XHR0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxyXG5cdFx0KS5zdWJzY3JpYmUoKTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG5cdFx0dGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdXBkYXRlVmlldygpOiB2b2lkIHtcclxuXHRcdHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG5cdFx0dGhpcy5fdmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgdGhpcy5fY29udGV4dCk7XHJcblx0fVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { Directive, Renderer2, ViewContainerRef, Input, TemplateRef, ChangeDetectorRef, } from "@angular/core";
|
|
2
|
-
import { Subscription, Subject } from "rxjs";
|
|
3
|
-
import { tap, filter, pairwise, startWith } from "rxjs/operators";
|
|
4
|
-
import { ViewportService } from "./viewport.service";
|
|
5
|
-
import { isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, isViewportConditionMatch } from "./viewport.util";
|
|
6
|
-
export class SsvViewportMatcherContext {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.sizeType = null;
|
|
9
|
-
this.sizeTypeExclude = null;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export class SsvViewportMatcherDirective {
|
|
13
|
-
constructor(viewport, renderer, viewContainer, cdr, templateRef) {
|
|
14
|
-
this.viewport = viewport;
|
|
15
|
-
this.renderer = renderer;
|
|
16
|
-
this.viewContainer = viewContainer;
|
|
17
|
-
this.cdr = cdr;
|
|
18
|
-
this._context = new SsvViewportMatcherContext();
|
|
19
|
-
this._thenTemplateRef = null;
|
|
20
|
-
this._elseTemplateRef = null;
|
|
21
|
-
this._thenViewRef = null;
|
|
22
|
-
this._elseViewRef = null;
|
|
23
|
-
this.sizeType$$ = Subscription.EMPTY;
|
|
24
|
-
this.cssClass$$ = Subscription.EMPTY;
|
|
25
|
-
this._update$ = new Subject();
|
|
26
|
-
this._thenTemplateRef = templateRef;
|
|
27
|
-
}
|
|
28
|
-
set ssvViewportMatcher(value) {
|
|
29
|
-
if (isViewportSizeMatcherExpression(value)) {
|
|
30
|
-
this._context.expression = value;
|
|
31
|
-
}
|
|
32
|
-
else if (isViewportSizeMatcherTupleExpression(value)) {
|
|
33
|
-
const [op, size] = value;
|
|
34
|
-
this._context.expression = {
|
|
35
|
-
operation: op,
|
|
36
|
-
size
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this._context.sizeType = value;
|
|
41
|
-
}
|
|
42
|
-
if (this.sizeInfo) {
|
|
43
|
-
this._update$.next(this._context);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
set ssvViewportMatcherExclude(value) {
|
|
47
|
-
this._context.sizeTypeExclude = value;
|
|
48
|
-
if (this.sizeInfo) {
|
|
49
|
-
this._update$.next(this._context);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
set ssvViewportMatcherElse(templateRef) {
|
|
53
|
-
this._elseTemplateRef = templateRef;
|
|
54
|
-
this._elseViewRef = null; // clear previous view if any.
|
|
55
|
-
if (this.sizeInfo) {
|
|
56
|
-
this._update$.next(this._context);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
ngOnInit() {
|
|
60
|
-
// console.log("ssvViewportMatcher init");
|
|
61
|
-
this._update$
|
|
62
|
-
.pipe(
|
|
63
|
-
// tap(x => console.log(">>> ssvViewportMatcher - update triggered", x)),
|
|
64
|
-
filter(() => !!this.sizeInfo),
|
|
65
|
-
// tap(x => console.log(">>> ssvViewportMatcher - updating...", x)),
|
|
66
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
67
|
-
tap(() => this._updateView(this.sizeInfo)), tap(() => this.cdr.markForCheck()))
|
|
68
|
-
.subscribe();
|
|
69
|
-
this.sizeType$$ = this.viewport.sizeType$
|
|
70
|
-
.pipe(
|
|
71
|
-
// tap(x => console.log("ssvViewportMatcher - sizeType changed", x)),
|
|
72
|
-
tap(x => this.sizeInfo = x), tap(() => this._update$.next(this._context)))
|
|
73
|
-
.subscribe();
|
|
74
|
-
this.cssClass$$ = this.viewport.sizeType$
|
|
75
|
-
.pipe(startWith(undefined), filter(() => !!(this._thenViewRef || this._elseViewRef)), pairwise(), tap(([prev, curr]) => {
|
|
76
|
-
var _a;
|
|
77
|
-
const el = this._thenViewRef
|
|
78
|
-
? this._thenViewRef.rootNodes[0]
|
|
79
|
-
: (_a = this._elseViewRef) === null || _a === void 0 ? void 0 : _a.rootNodes[0];
|
|
80
|
-
if (!el.classList) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
if (prev) {
|
|
84
|
-
this.renderer.removeClass(el, `ssv-vp-size--${prev.name}`);
|
|
85
|
-
}
|
|
86
|
-
this.renderer.addClass(el, `ssv-vp-size--${curr === null || curr === void 0 ? void 0 : curr.name}`);
|
|
87
|
-
}))
|
|
88
|
-
.subscribe();
|
|
89
|
-
}
|
|
90
|
-
ngOnDestroy() {
|
|
91
|
-
this.cssClass$$.unsubscribe();
|
|
92
|
-
this.sizeType$$.unsubscribe();
|
|
93
|
-
this._update$.complete();
|
|
94
|
-
}
|
|
95
|
-
_updateView(sizeInfo) {
|
|
96
|
-
if (isViewportConditionMatch(sizeInfo, this._context, this.viewport.sizeTypeMap)) {
|
|
97
|
-
if (!this._thenViewRef) {
|
|
98
|
-
this.viewContainer.clear();
|
|
99
|
-
this._elseViewRef = null;
|
|
100
|
-
if (this._thenTemplateRef) {
|
|
101
|
-
this._thenViewRef = this.viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
if (!this._elseViewRef) {
|
|
107
|
-
this.viewContainer.clear();
|
|
108
|
-
this._thenViewRef = null;
|
|
109
|
-
if (this._elseTemplateRef) {
|
|
110
|
-
this._elseViewRef = this.viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
SsvViewportMatcherDirective.decorators = [
|
|
117
|
-
{ type: Directive, args: [{
|
|
118
|
-
selector: "[ssvViewportMatcher]",
|
|
119
|
-
exportAs: "ssvViewportMatcher",
|
|
120
|
-
},] }
|
|
121
|
-
];
|
|
122
|
-
SsvViewportMatcherDirective.ctorParameters = () => [
|
|
123
|
-
{ type: ViewportService },
|
|
124
|
-
{ type: Renderer2 },
|
|
125
|
-
{ type: ViewContainerRef },
|
|
126
|
-
{ type: ChangeDetectorRef },
|
|
127
|
-
{ type: TemplateRef }
|
|
128
|
-
];
|
|
129
|
-
SsvViewportMatcherDirective.propDecorators = {
|
|
130
|
-
ssvViewportMatcher: [{ type: Input }],
|
|
131
|
-
ssvViewportMatcherExclude: [{ type: Input }],
|
|
132
|
-
ssvViewportMatcherElse: [{ type: Input }]
|
|
133
|
-
};
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtbWF0Y2hlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiQzovZGV2L2dpdC9Ac3N2Lm5neC51eC9zcmMvIiwic291cmNlcyI6WyJ2aWV3cG9ydC92aWV3cG9ydC1tYXRjaGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR04sU0FBUyxFQUNULFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQ04sK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNwQyx3QkFBd0IsRUFDeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixNQUFNLE9BQU8seUJBQXlCO0lBQXRDO1FBRUMsYUFBUSxHQUE2QixJQUFJLENBQUM7UUFDMUMsb0JBQWUsR0FBNkIsSUFBSSxDQUFDO0lBR2xELENBQUM7Q0FBQTtBQU1ELE1BQU0sT0FBTywyQkFBMkI7SUErQ3ZDLFlBQ1MsUUFBeUIsRUFDekIsUUFBbUIsRUFDbkIsYUFBK0IsRUFDL0IsR0FBc0IsRUFDOUIsV0FBbUQ7UUFKM0MsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEvQ3ZCLGFBQVEsR0FBOEIsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQ3RFLHFCQUFnQixHQUFrRCxJQUFJLENBQUM7UUFDdkUscUJBQWdCLEdBQWtELElBQUksQ0FBQztR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QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFFekIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FDeEQsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsUUFBUSxDQUNiLENBQUM7aUJBQ0Y7YUFDRDtTQUNEO2FBQU07WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBRXpCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQ3hELElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FDYixDQUFDO2lCQUNGO2FBQ0Q7U0FDRDtJQUNGLENBQUM7OztZQXpJRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsUUFBUSxFQUFFLG9CQUFvQjthQUM5Qjs7O1lBbkJRLGVBQWU7WUFWdkIsU0FBUztZQUNULGdCQUFnQjtZQUloQixpQkFBaUI7WUFEakIsV0FBVzs7O2lDQXVDVixLQUFLO3dDQWtCTCxLQUFLO3FDQVFMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdE9uSW5pdCxcclxuXHRPbkRlc3Ryb3ksXHJcblx0RGlyZWN0aXZlLFxyXG5cdFJlbmRlcmVyMixcclxuXHRWaWV3Q29udGFpbmVyUmVmLFxyXG5cdElucHV0LFxyXG5cdEVtYmVkZGVkVmlld1JlZixcclxuXHRUZW1wbGF0ZVJlZixcclxuXHRDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YXAsIGZpbHRlciwgcGFpcndpc2UsIHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld3BvcnQuc2VydmljZVwiO1xyXG5pbXBvcnQge1xyXG5cdGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24sXHJcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uLFxyXG5cdGlzVmlld3BvcnRDb25kaXRpb25NYXRjaFxyXG59IGZyb20gXCIuL3ZpZXdwb3J0LnV0aWxcIjtcclxuaW1wb3J0IHsgVmlld3BvcnRTaXplVHlwZUluZm8sIFZpZXdwb3J0TWF0Y2hDb25kaXRpb25zLCBWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbiB9IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dCBpbXBsZW1lbnRzIFZpZXdwb3J0TWF0Y2hDb25kaXRpb25zIHtcclxuXHJcblx0c2l6ZVR5cGU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XHJcblx0c2l6ZVR5cGVFeGNsdWRlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xyXG5cdGV4cHJlc3Npb24/OiBWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbjtcclxuXHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG5cdHNlbGVjdG9yOiBcIltzc3ZWaWV3cG9ydE1hdGNoZXJdXCIsXHJcblx0ZXhwb3J0QXM6IFwic3N2Vmlld3BvcnRNYXRjaGVyXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTc3ZWaWV3cG9ydE1hdGNoZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG5cdHNpemVJbmZvOiBWaWV3cG9ydFNpemVUeXBlSW5mbyB8IHVuZGVmaW5lZDtcclxuXHJcblx0cHJpdmF0ZSBfY29udGV4dDogU3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dCA9IG5ldyBTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0KCk7XHJcblx0cHJpdmF0ZSBfdGhlblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0PiB8IG51bGwgPSBudWxsO1xyXG5cdHByaXZhdGUgX2Vsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8U3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dD4gfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIF90aGVuVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQ+IHwgbnVsbCA9IG51bGw7XHJcblx0cHJpdmF0ZSBfZWxzZVZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0PiB8IG51bGwgPSBudWxsO1xyXG5cdHByaXZhdGUgc2l6ZVR5cGUkJCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcclxuXHRwcml2YXRlIGNzc0NsYXNzJCQgPSBTdWJzY3JpcHRpb24uRU1QVFk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfdXBkYXRlJCA9IG5ldyBTdWJqZWN0PFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQ+KCk7XHJcblxyXG5cdEBJbnB1dCgpIHNldCBzc3ZWaWV3cG9ydE1hdGNoZXIodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24pIHtcclxuXHRcdGlmIChpc1ZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uKHZhbHVlKSkge1xyXG5cdFx0XHR0aGlzLl9jb250ZXh0LmV4cHJlc3Npb24gPSB2YWx1ZTtcclxuXHRcdH0gZWxzZSBpZiAoaXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uKHZhbHVlKSkge1xyXG5cdFx0XHRjb25zdCBbb3AsIHNpemVdID0gdmFsdWU7XHJcblx0XHRcdHRoaXMuX2NvbnRleHQuZXhwcmVzc2lvbiA9IHtcclxuXHRcdFx0XHRvcGVyYXRpb246IG9wLFxyXG5cdFx0XHRcdHNpemVcclxuXHRcdFx0fTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuX2NvbnRleHQuc2l6ZVR5cGUgPSB2YWx1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5zaXplSW5mbykge1xyXG5cdFx0XHR0aGlzLl91cGRhdGUkLm5leHQodGhpcy5fY29udGV4dCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRASW5wdXQoKSBzZXQgc3N2Vmlld3BvcnRNYXRjaGVyRXhjbHVkZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuXHRcdHRoaXMuX2NvbnRleHQuc2l6ZVR5cGVFeGNsdWRlID0gdmFsdWU7XHJcblxyXG5cdFx0aWYgKHRoaXMuc2l6ZUluZm8pIHtcclxuXHRcdFx0dGhpcy5fdXBkYXRlJC5uZXh0KHRoaXMuX2NvbnRleHQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0QElucHV0KCkgc2V0IHNzdlZpZXdwb3J0TWF0Y2hlckVsc2UodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQ+IHwgbnVsbCkge1xyXG5cdFx0dGhpcy5fZWxzZVRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XHJcblx0XHR0aGlzLl9lbHNlVmlld1JlZiA9IG51bGw7IC8vIGNsZWFyIHByZXZpb3VzIHZpZXcgaWYgYW55LlxyXG5cdFx0aWYgKHRoaXMuc2l6ZUluZm8pIHtcclxuXHRcdFx0dGhpcy5fdXBkYXRlJC5uZXh0KHRoaXMuX2NvbnRleHQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHZpZXdwb3J0OiBWaWV3cG9ydFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcblx0XHRwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcblx0XHRwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0XHR0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8U3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dD4sXHJcblx0KSB7XHJcblx0XHR0aGlzLl90aGVuVGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0Ly8gY29uc29sZS5sb2coXCJzc3ZWaWV3cG9ydE1hdGNoZXIgaW5pdFwiKTtcclxuXHJcblx0XHR0aGlzLl91cGRhdGUkXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdC8vIHRhcCh4ID0+IGNvbnNvbGUubG9nKFwiPj4+IHNzdlZpZXdwb3J0TWF0Y2hlciAtIHVwZGF0ZSB0cmlnZ2VyZWRcIiwgeCkpLFxyXG5cdFx0XHRcdGZpbHRlcigoKSA9PiAhIXRoaXMuc2l6ZUluZm8pLFxyXG5cdFx0XHRcdC8vIHRhcCh4ID0+IGNvbnNvbGUubG9nKFwiPj4+IHNzdlZpZXdwb3J0TWF0Y2hlciAtIHVwZGF0aW5nLi4uXCIsIHgpKSxcclxuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxyXG5cdFx0XHRcdHRhcCgoKSA9PiB0aGlzLl91cGRhdGVWaWV3KHRoaXMuc2l6ZUluZm8hKSksXHJcblx0XHRcdFx0dGFwKCgpID0+IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHR0aGlzLnNpemVUeXBlJCQgPSB0aGlzLnZpZXdwb3J0LnNpemVUeXBlJFxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHQvLyB0YXAoeCA9PiBjb25zb2xlLmxvZyhcInNzdlZpZXdwb3J0TWF0Y2hlciAtIHNpemVUeXBlIGNoYW5nZWRcIiwgeCkpLFxyXG5cdFx0XHRcdHRhcCh4ID0+IHRoaXMuc2l6ZUluZm8gPSB4KSxcclxuXHRcdFx0XHR0YXAoKCkgPT4gdGhpcy5fdXBkYXRlJC5uZXh0KHRoaXMuX2NvbnRleHQpKSxcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKCk7XHJcblxyXG5cdFx0dGhpcy5jc3NDbGFzcyQkID0gdGhpcy52aWV3cG9ydC5zaXplVHlwZSRcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0c3RhcnRXaXRoPFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpLFxyXG5cdFx0XHRcdGZpbHRlcigoKSA9PiAhISh0aGlzLl90aGVuVmlld1JlZiB8fCB0aGlzLl9lbHNlVmlld1JlZikpLFxyXG5cdFx0XHRcdHBhaXJ3aXNlKCksXHJcblx0XHRcdFx0dGFwKChbcHJldiwgY3Vycl0pID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IGVsOiBFbGVtZW50ID0gdGhpcy5fdGhlblZpZXdSZWZcclxuXHRcdFx0XHRcdFx0PyB0aGlzLl90aGVuVmlld1JlZi5yb290Tm9kZXNbMF1cclxuXHRcdFx0XHRcdFx0OiB0aGlzLl9lbHNlVmlld1JlZj8ucm9vdE5vZGVzWzBdO1xyXG5cclxuXHRcdFx0XHRcdGlmICghZWwuY2xhc3NMaXN0KSB7XHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChwcmV2KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWwsIGBzc3YtdnAtc2l6ZS0tJHtwcmV2Lm5hbWV9YCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsLCBgc3N2LXZwLXNpemUtLSR7Y3Vycj8ubmFtZX1gKTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuY3NzQ2xhc3MkJC51bnN1YnNjcmliZSgpO1xyXG5cdFx0dGhpcy5zaXplVHlwZSQkLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR0aGlzLl91cGRhdGUkLmNvbXBsZXRlKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF91cGRhdGVWaWV3KHNpemVJbmZvOiBWaWV3cG9ydFNpemVUeXBlSW5mbykge1xyXG5cdFx0aWYgKGlzVmlld3BvcnRDb25kaXRpb25NYXRjaChzaXplSW5mbywgdGhpcy5fY29udGV4dCwgdGhpcy52aWV3cG9ydC5zaXplVHlwZU1hcCkpIHtcclxuXHRcdFx0aWYgKCF0aGlzLl90aGVuVmlld1JlZikge1xyXG5cdFx0XHRcdHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG5cdFx0XHRcdHRoaXMuX2Vsc2VWaWV3UmVmID0gbnVsbDtcclxuXHJcblx0XHRcdFx0aWYgKHRoaXMuX3RoZW5UZW1wbGF0ZVJlZikge1xyXG5cdFx0XHRcdFx0dGhpcy5fdGhlblZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KFxyXG5cdFx0XHRcdFx0XHR0aGlzLl90aGVuVGVtcGxhdGVSZWYsXHJcblx0XHRcdFx0XHRcdHRoaXMuX2NvbnRleHQsXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKCF0aGlzLl9lbHNlVmlld1JlZikge1xyXG5cdFx0XHRcdHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG5cdFx0XHRcdHRoaXMuX3RoZW5WaWV3UmVmID0gbnVsbDtcclxuXHJcblx0XHRcdFx0aWYgKHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZikge1xyXG5cdFx0XHRcdFx0dGhpcy5fZWxzZVZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KFxyXG5cdFx0XHRcdFx0XHR0aGlzLl9lbHNlVGVtcGxhdGVSZWYsXHJcblx0XHRcdFx0XHRcdHRoaXMuX2NvbnRleHQsXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcbn1cclxuIl19
|