@ssv/ngx.ux 3.2.0 → 3.3.0-dev.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/fesm2022/ssv-ngx.ux.mjs +81 -100
- package/fesm2022/ssv-ngx.ux.mjs.map +1 -1
- package/index.d.ts +221 -3
- package/package.json +1 -3
- package/esm2022/index.mjs +0 -4
- package/esm2022/internal/internal.model.mjs +0 -2
- package/esm2022/platform/window.mjs +0 -31
- package/esm2022/ssv-ngx.ux.mjs +0 -5
- package/esm2022/ux.module.mjs +0 -19
- package/esm2022/version.mjs +0 -2
- package/esm2022/viewport/index.mjs +0 -10
- package/esm2022/viewport/viewport-data/index.mjs +0 -4
- package/esm2022/viewport/viewport-data/viewport-data-matcher.mjs +0 -107
- package/esm2022/viewport/viewport-data/viewport-data.pipe.mjs +0 -48
- package/esm2022/viewport/viewport-data/viewport-data.service.mjs +0 -32
- package/esm2022/viewport/viewport-data/viewport-data.utils.mjs +0 -100
- package/esm2022/viewport/viewport-matcher-var.directive.mjs +0 -69
- package/esm2022/viewport/viewport-matcher.directive.mjs +0 -136
- package/esm2022/viewport/viewport-server-size.service.mjs +0 -38
- package/esm2022/viewport/viewport.model.mjs +0 -30
- package/esm2022/viewport/viewport.module.mjs +0 -27
- package/esm2022/viewport/viewport.options.mjs +0 -51
- package/esm2022/viewport/viewport.service.mjs +0 -79
- package/esm2022/viewport/viewport.util.mjs +0 -117
- package/internal/internal.model.d.ts +0 -3
- package/platform/window.d.ts +0 -13
- package/ux.module.d.ts +0 -7
- package/version.d.ts +0 -1
- package/viewport/index.d.ts +0 -9
- package/viewport/viewport-data/index.d.ts +0 -3
- package/viewport/viewport-data/viewport-data-matcher.d.ts +0 -32
- package/viewport/viewport-data/viewport-data.pipe.d.ts +0 -18
- package/viewport/viewport-data/viewport-data.service.d.ts +0 -16
- package/viewport/viewport-data/viewport-data.utils.d.ts +0 -21
- package/viewport/viewport-matcher-var.directive.d.ts +0 -25
- package/viewport/viewport-matcher.directive.d.ts +0 -33
- package/viewport/viewport-server-size.service.d.ts +0 -10
- package/viewport/viewport.model.d.ts +0 -47
- package/viewport/viewport.module.d.ts +0 -9
- package/viewport/viewport.options.d.ts +0 -19
- package/viewport/viewport.service.d.ts +0 -34
- package/viewport/viewport.util.d.ts +0 -25
package/esm2022/ux.module.mjs
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { NgModule } from "@angular/core";
|
|
2
|
-
import { SsvUxViewportModule } from "./viewport/viewport.module";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
const EXPORTED_IMPORTS = [
|
|
5
|
-
SsvUxViewportModule,
|
|
6
|
-
];
|
|
7
|
-
export class SsvUxModule {
|
|
8
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SsvUxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: SsvUxModule, imports: [SsvUxViewportModule], exports: [SsvUxViewportModule] });
|
|
10
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SsvUxModule, imports: [EXPORTED_IMPORTS, SsvUxViewportModule] });
|
|
11
|
-
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SsvUxModule, decorators: [{
|
|
13
|
-
type: NgModule,
|
|
14
|
-
args: [{
|
|
15
|
-
imports: [EXPORTED_IMPORTS],
|
|
16
|
-
exports: [EXPORTED_IMPORTS]
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9uZ3gudXgvc3JjL3V4Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVqRSxNQUFNLGdCQUFnQixHQUFHO0lBQ3hCLG1CQUFtQjtDQUNuQixDQUFDO0FBTUYsTUFBTSxPQUFPLFdBQVc7dUdBQVgsV0FBVzt3R0FBWCxXQUFXLFlBUHZCLG1CQUFtQixhQUFuQixtQkFBbUI7d0dBT1AsV0FBVyxZQUhiLGdCQUFnQixFQUoxQixtQkFBbUI7OzJGQU9QLFdBQVc7a0JBSnZCLFFBQVE7bUJBQUM7b0JBQ1QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgU3N2VXhWaWV3cG9ydE1vZHVsZSB9IGZyb20gXCIuL3ZpZXdwb3J0L3ZpZXdwb3J0Lm1vZHVsZVwiO1xuXG5jb25zdCBFWFBPUlRFRF9JTVBPUlRTID0gW1xuXHRTc3ZVeFZpZXdwb3J0TW9kdWxlLFxuXTtcblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czogW0VYUE9SVEVEX0lNUE9SVFNdLFxuXHRleHBvcnRzOiBbRVhQT1JURURfSU1QT1JUU11cbn0pXG5leHBvcnQgY2xhc3MgU3N2VXhNb2R1bGUge1xuXG59Il19
|
package/esm2022/version.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const VERSION = "3.2.0";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbmd4LnV4L3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiMy4yLjBcIjtcbiJdfQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export * from "./viewport-data/index";
|
|
2
|
-
export { SsvUxViewportModule } from "./viewport.module";
|
|
3
|
-
export { provideSsvUxViewportOptions, VIEWPORT_OPTIONS, withViewportSsrDevice } from "./viewport.options";
|
|
4
|
-
export { SsvViewportMatcherVarDirective, SsvViewportMatcherVarContext } from "./viewport-matcher-var.directive";
|
|
5
|
-
export { SsvViewportMatcherDirective, SsvViewportMatcherContext } from "./viewport-matcher.directive";
|
|
6
|
-
export { VIEWPORT_SSR_DEVICE, ViewportServerSizeService } from "./viewport-server-size.service";
|
|
7
|
-
export { ComparisonOperation, DeviceType, ViewportSizeType, } from "./viewport.model";
|
|
8
|
-
export { ViewportService } from "./viewport.service";
|
|
9
|
-
export { generateViewportSizeType } from "./viewport.util";
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25neC51eC9zcmMvdmlld3BvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsZ0JBQWdCLEVBQTBCLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEksT0FBTyxFQUFFLDhCQUE4QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEcsT0FBTyxFQU1OLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsZ0JBQWdCLEdBQ2hCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdmlld3BvcnQtZGF0YS9pbmRleFwiO1xuXG5leHBvcnQgeyBTc3ZVeFZpZXdwb3J0TW9kdWxlIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kdWxlXCI7XG5leHBvcnQgeyBwcm92aWRlU3N2VXhWaWV3cG9ydE9wdGlvbnMsIFZJRVdQT1JUX09QVElPTlMsIHR5cGUgVXhWaWV3cG9ydE9wdGlvbnMsIHdpdGhWaWV3cG9ydFNzckRldmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0Lm9wdGlvbnNcIjtcblxuZXhwb3J0IHsgU3N2Vmlld3BvcnRNYXRjaGVyVmFyRGlyZWN0aXZlLCBTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0IH0gZnJvbSBcIi4vdmlld3BvcnQtbWF0Y2hlci12YXIuZGlyZWN0aXZlXCI7XG5leHBvcnQgeyBTc3ZWaWV3cG9ydE1hdGNoZXJEaXJlY3RpdmUsIFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQgfSBmcm9tIFwiLi92aWV3cG9ydC1tYXRjaGVyLmRpcmVjdGl2ZVwiO1xuZXhwb3J0IHsgVklFV1BPUlRfU1NSX0RFVklDRSwgVmlld3BvcnRTZXJ2ZXJTaXplU2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LXNlcnZlci1zaXplLnNlcnZpY2VcIjtcbmV4cG9ydCB7XG5cdHR5cGUgQ29tcGFyaXNvbk9wZXJhdGlvblZhbHVlVHlwZSxcblx0dHlwZSBDb21wYXJpc29uT3BlcmF0aW9uTGl0ZXJhbCxcblx0dHlwZSBDb21wYXJpc29uT3BlcmF0aW9uS2V5VHlwZSxcblx0dHlwZSBWaWV3cG9ydFNpemUsXG5cdHR5cGUgVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdENvbXBhcmlzb25PcGVyYXRpb24sXG5cdERldmljZVR5cGUsXG5cdFZpZXdwb3J0U2l6ZVR5cGUsXG59IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XG5leHBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC5zZXJ2aWNlXCI7XG5leHBvcnQgeyBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGUgfSBmcm9tIFwiLi92aWV3cG9ydC51dGlsXCI7XG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25neC51eC9zcmMvdmlld3BvcnQvdmlld3BvcnQtZGF0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQTJCLHlCQUF5QixFQUF5QyxNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVmlld3BvcnREYXRhU2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEuc2VydmljZVwiO1xuZXhwb3J0IHsgVmlld3BvcnREYXRhUGlwZSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEucGlwZVwiO1xuZXhwb3J0IHsgdHlwZSBWaWV3cG9ydERhdGFDb25maWcsIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3ksIHR5cGUgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneUxpdGVyYWwgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLW1hdGNoZXJcIjtcbiJdfQ==
|
|
@@ -1,107 +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
|
-
for (let index = 0; index < sizeTypes.length; index++) {
|
|
95
|
-
for (const idx of isSmallerFirst ? [--downIndex, ++upIndex] : [++upIndex, --downIndex]) {
|
|
96
|
-
const sizeType = sizeTypes[idx];
|
|
97
|
-
if (sizeType) {
|
|
98
|
-
data = dataConfig[sizeType.name];
|
|
99
|
-
if (data !== undefined) {
|
|
100
|
-
return data;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return undefined;
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS1tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3gudXgvc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS1tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sQ0FBTixJQUFZLHlCQWVYO0FBZkQsV0FBWSx5QkFBeUI7SUFDcEMseURBQXlEO0lBQ3pELDJFQUFLLENBQUE7SUFFTCwyRkFBMkY7SUFDM0YsK0VBQU8sQ0FBQTtJQUVQLHdGQUF3RjtJQUN4Riw2RUFBTSxDQUFBO0lBRU4sbUlBQW1JO0lBQ25JLHVHQUFtQixDQUFBO0lBRW5CLGtJQUFrSTtJQUNsSSxxR0FBa0IsQ0FBQTtBQUNuQixDQUFDLEVBZlcseUJBQXlCLEtBQXpCLHlCQUF5QixRQWVwQztBQVlEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDaEMsVUFBaUMsRUFDakMsUUFBOEIsRUFDOUIsUUFBbUMsRUFDbkMsU0FBaUMsRUFDakMsV0FBNkM7SUFFN0MsTUFBTSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2QsTUFBTSxLQUFLLENBQUMseUVBQXlFLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQU0sQ0FBQztJQUN4RSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUM7QUFDM0IsQ0FBQztBQUdELE1BQU0sdUJBQXVCLEdBQW9DO0lBQ2hFLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEVBQUUsY0FB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QUNqQyxjQUF1QjtJQUV2QixJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQUksU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDckMsSUFBSSxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQztJQUduQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3hGLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNkLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDeEIsT0FBTyxJQUFJLENBQUM7Z0JBQ2IsQ0FBQztZQUNGLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpY3Rpb25hcnkgfSBmcm9tIFwiLi4vLi4vaW50ZXJuYWwvaW50ZXJuYWwubW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgVmlld3BvcnRTaXplVHlwZUluZm8gfSBmcm9tIFwiLi4vdmlld3BvcnQubW9kZWxcIjtcblxuZXhwb3J0IHR5cGUgVmlld3BvcnREYXRhQ29uZmlnPFRWYWx1ZSA9IHVua25vd24sIFREYXRhID0gRGljdGlvbmFyeTxUVmFsdWU+PiA9IFREYXRhICYge1xuXHRkZWZhdWx0PzogVFZhbHVlXG59O1xuXG5leHBvcnQgZW51bSBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5IHtcblx0LyoqIEluZGljYXRlcyB0aGF0IHNpemUgc2hvdWxkIG1hdGNoIGV4YWN0IG9yIGRlZmF1bHQuICovXG5cdGV4YWN0LFxuXG5cdC8qKiBJbmRpY2F0ZXMgdGhhdCBzaXplIG1hdGNoZXMgd2hlbiBleGFjdCBtYXRjaCwgZmlyc3QgbWF0Y2ggc21hbGxlciAoZG93bikgb3IgZGVmYXVsdC4gKi9cblx0c21hbGxlcixcblxuXHQvKiogSW5kaWNhdGVzIHRoYXQgc2l6ZSBtYXRjaGVzIHdoZW4gZXhhY3QgbWF0Y2gsIGZpcnN0IG1hdGNoIGxhcmdlciAodXApIG9yIGRlZmF1bHQuICovXG5cdGxhcmdlcixcblxuXHQvKiogSW5kaWNhdGVzIHRoYXQgc2l6ZSBtYXRjaGVzIHdoZW4gZXhhY3QgbWF0Y2gsIG9yIGl0IHRyaWVzIGJvdGggc21hbGxlci9sYXJnZXIgKHNtYWxsZXIgaXMgcHJlZmVycmVkKSB1bnRpbCBtYXRjaCBvciBkZWZhdWx0LiAqL1xuXHRjbG9zZXN0U21hbGxlckZpcnN0LFxuXG5cdC8qKiBJbmRpY2F0ZXMgdGhhdCBzaXplIG1hdGNoZXMgd2hlbiBleGFjdCBtYXRjaCwgb3IgaXQgdHJpZXMgYm90aCBsYXJnZXIvc21hbGxlciAobGFyZ2VyIGlzIHByZWZlcnJlZCkgdW50aWwgbWF0Y2ggb3IgZGVmYXVsdC4gKi9cblx0Y2xvc2VzdExhcmdlckZpcnN0LFxufVxuZXhwb3J0IHR5cGUgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneUxpdGVyYWwgPSBrZXlvZiB0eXBlb2YgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneTtcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydERhdGFNYXRjaGVyPFQgPSB1bmtub3duPiB7XG5cdChcblx0XHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdFx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0XHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXG5cdFx0c2l6ZVR5cGVNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+LFxuXHQpOiBUIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gbWF0Y2ggZGF0YSBiYXNlZCBvbiBzdHJhdGVneSBhbmQgc2l6ZS5cbiAqXG4gKiBAcGFyYW0gZGF0YUNvbmZpZyBEYXRhIGNvbmZpZyB0byBnZW5lcmF0ZSBydWxlcyBiYXNlZCBvbi5cbiAqIEBwYXJhbSBzaXplVHlwZSBTaXplIHR5cGUgdG8gZ2V0IGRhdGEgZm9yLlxuICogQHBhcmFtIHN0cmF0ZWd5IFN0cmF0ZWd5IHRvIHVzZSB3aGVuIGJ1aWxkaW5nIHJ1bGVzLlxuICogQHBhcmFtIHNpemVUeXBlcyBBdmFpbGFibGUgc2l6ZSB0eXBlcyBvcmRlcmVkIGJ5IGluZGV4IHR5cGUuIChDYW4gYmUgb2J0YWluZWQgZnJvbSBgVmlld3BvcnRTZXJ2aWNlYClcbiAqIEBwYXJhbSBzaXplVHlwZU1hcCBBdmFpbGFibGUgc2l6ZSB0eXBlIG1hcC4gKENhbiBiZSBvYnRhaW5lZCBmcm9tIGBWaWV3cG9ydFNlcnZpY2VgKVxuICogQHJldHVybnMgUmV0dXJucyB0aGUgbWF0Y2hlZCBkYXRhIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hWaWV3cG9ydERhdGE8VD4oXG5cdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcblx0c2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxuXHRzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSxcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxuXHRzaXplVHlwZU1hcDogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz4sXG4pOiBUIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbWF0Y2hGbiA9IG1hdGNoU3RyYXRlZ3lIYW5kbGVyTWFwW3N0cmF0ZWd5XTtcblx0aWYgKCFtYXRjaEZuKSB7XG5cdFx0dGhyb3cgRXJyb3IoYG1hdGNoVmlld3BvcnREYXRhOiBWaWV3cG9ydCBEYXRhIHN0cmF0ZWd5IG5vdCBpbXBsZW1lbnRlZC4gU3RyYXRlZ3k6ICcke3N0cmF0ZWd5fSdgKTtcblx0fVxuXHRjb25zdCBkYXRhID0gbWF0Y2hGbihkYXRhQ29uZmlnLCBzaXplVHlwZSwgc2l6ZVR5cGVzLCBzaXplVHlwZU1hcCkgYXMgVDtcblx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBkYXRhO1xuXHR9XG5cdHJldHVybiBkYXRhQ29uZmlnLmRlZmF1bHQ7XG59XG5cblxuY29uc3QgbWF0Y2hTdHJhdGVneUhhbmRsZXJNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnREYXRhTWF0Y2hlcj4gPSB7XG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LmV4YWN0XTogbWF0Y2hXaXRoRXhhY3QsXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5Lmxhcmdlcl06IG1hdGNoV2l0aExhcmdlck1hdGNoLFxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5zbWFsbGVyXTogbWF0Y2hXaXRoU21hbGxlck1hdGNoLFxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5jbG9zZXN0U21hbGxlckZpcnN0XTogbWF0Y2hXaXRoQ2xvc2VzdFNtYWxsZXJGaXJzdE1hdGNoLFxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5jbG9zZXN0TGFyZ2VyRmlyc3RdOiBtYXRjaFdpdGhDbG9zZXN0TGFyZ2VyRmlyc3RNYXRjaCxcbn07XG5cbmZ1bmN0aW9uIG1hdGNoV2l0aEV4YWN0PFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG4pOiBUIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGRhdGFDb25maWdbY3VycmVudFNpemVUeXBlLm5hbWVdO1xufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhMYXJnZXJNYXRjaDxUPihcblx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxuXHRjdXJyZW50U2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXG4pOiBUIHwgdW5kZWZpbmVkIHtcblx0bGV0IGRhdGEgPSBkYXRhQ29uZmlnW2N1cnJlbnRTaXplVHlwZS5uYW1lXTtcblx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBkYXRhO1xuXHR9XG5cblx0Y29uc3QgbGFyZ2VzdFR5cGVJZHggPSBzaXplVHlwZXNbc2l6ZVR5cGVzLmxlbmd0aCAtIDFdLnR5cGU7XG5cdGlmIChjdXJyZW50U2l6ZVR5cGUudHlwZSA+PSBsYXJnZXN0VHlwZUlkeCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRmb3IgKGxldCBpbmRleCA9IGN1cnJlbnRTaXplVHlwZS50eXBlOyBpbmRleCA8IHNpemVUeXBlcy5sZW5ndGg7IGluZGV4KyspIHtcblx0XHRjb25zdCBzaXplVHlwZSA9IHNpemVUeXBlc1tpbmRleF07XG5cdFx0ZGF0YSA9IGRhdGFDb25maWdbc2l6ZVR5cGUubmFtZV07XG5cdFx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbWF0Y2hXaXRoU21hbGxlck1hdGNoPFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcbik6IFQgfCB1bmRlZmluZWQge1xuXHRsZXQgZGF0YSA9IGRhdGFDb25maWdbY3VycmVudFNpemVUeXBlLm5hbWVdO1xuXHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGRhdGE7XG5cdH1cblxuXHRpZiAoY3VycmVudFNpemVUeXBlLnR5cGUgPD0gMCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZm9yLWRpcmVjdGlvblxuXHRmb3IgKGxldCBpbmRleCA9IGN1cnJlbnRTaXplVHlwZS50eXBlOyBpbmRleCA8IHNpemVUeXBlcy5sZW5ndGg7IGluZGV4LS0pIHtcblx0XHRjb25zdCBzaXplVHlwZSA9IHNpemVUeXBlc1tpbmRleF07XG5cdFx0ZGF0YSA9IGRhdGFDb25maWdbc2l6ZVR5cGUubmFtZV07XG5cdFx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbWF0Y2hXaXRoQ2xvc2VzdFNtYWxsZXJGaXJzdE1hdGNoPFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcbik6IFQgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gY2xvc2VzdE1hdGNoKGRhdGFDb25maWcsIGN1cnJlbnRTaXplVHlwZSwgc2l6ZVR5cGVzLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hXaXRoQ2xvc2VzdExhcmdlckZpcnN0TWF0Y2g8VD4oXG5cdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcblx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxuKTogVCB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBjbG9zZXN0TWF0Y2goZGF0YUNvbmZpZywgY3VycmVudFNpemVUeXBlLCBzaXplVHlwZXMsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gY2xvc2VzdE1hdGNoPFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcblx0aXNTbWFsbGVyRmlyc3Q6IGJvb2xlYW5cbik6IFQgfCB1bmRlZmluZWQge1xuXHRsZXQgZGF0YSA9IGRhdGFDb25maWdbY3VycmVudFNpemVUeXBlLm5hbWVdO1xuXHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGRhdGE7XG5cdH1cblxuXHRsZXQgZG93bkluZGV4ID0gY3VycmVudFNpemVUeXBlLnR5cGU7XG5cdGxldCB1cEluZGV4ID0gY3VycmVudFNpemVUeXBlLnR5cGU7XG5cblx0IFxuXHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZVR5cGVzLmxlbmd0aDsgaW5kZXgrKykge1xuXHRcdGZvciAoY29uc3QgaWR4IG9mIGlzU21hbGxlckZpcnN0ID8gWy0tZG93bkluZGV4LCArK3VwSW5kZXhdIDogWysrdXBJbmRleCwgLS1kb3duSW5kZXhdKSB7XG5cdFx0XHRjb25zdCBzaXplVHlwZSA9IHNpemVUeXBlc1tpZHhdO1xuXHRcdFx0aWYgKHNpemVUeXBlKSB7XG5cdFx0XHRcdGRhdGEgPSBkYXRhQ29uZmlnW3NpemVUeXBlLm5hbWVdO1xuXHRcdFx0XHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Subscription, tap } from "rxjs";
|
|
2
|
-
import { Pipe, ChangeDetectorRef } from "@angular/core";
|
|
3
|
-
import { ViewportDataMatchStrategy } from "./viewport-data-matcher";
|
|
4
|
-
import { ViewportDataService } from "./viewport-data.service";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./viewport-data.service";
|
|
7
|
-
export class ViewportDataPipe {
|
|
8
|
-
viewportData;
|
|
9
|
-
cdr;
|
|
10
|
-
markForTransform = true;
|
|
11
|
-
value;
|
|
12
|
-
data;
|
|
13
|
-
strategy;
|
|
14
|
-
data$$ = Subscription.EMPTY;
|
|
15
|
-
constructor(viewportData, cdr) {
|
|
16
|
-
this.viewportData = viewportData;
|
|
17
|
-
this.cdr = cdr;
|
|
18
|
-
}
|
|
19
|
-
transform(data, strategy) {
|
|
20
|
-
if (!this.markForTransform && data === this.data && strategy === this.strategy) {
|
|
21
|
-
return this.value;
|
|
22
|
-
}
|
|
23
|
-
this.data = data;
|
|
24
|
-
this.strategy = strategy;
|
|
25
|
-
this.data$$.unsubscribe();
|
|
26
|
-
this.data$$ = this.viewportData.get$(data, ViewportDataMatchStrategy[strategy]).pipe(tap(value => {
|
|
27
|
-
this.markForTransform = true;
|
|
28
|
-
this.value = value;
|
|
29
|
-
this.cdr.markForCheck();
|
|
30
|
-
})).subscribe();
|
|
31
|
-
this.markForTransform = false;
|
|
32
|
-
return this.value;
|
|
33
|
-
}
|
|
34
|
-
ngOnDestroy() {
|
|
35
|
-
this.data$$.unsubscribe();
|
|
36
|
-
}
|
|
37
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataPipe, deps: [{ token: i1.ViewportDataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
38
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataPipe, isStandalone: true, name: "ssvViewportData", pure: false });
|
|
39
|
-
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataPipe, decorators: [{
|
|
41
|
-
type: Pipe,
|
|
42
|
-
args: [{
|
|
43
|
-
name: "ssvViewportData",
|
|
44
|
-
pure: false,
|
|
45
|
-
standalone: true,
|
|
46
|
-
}]
|
|
47
|
-
}], ctorParameters: () => [{ type: i1.ViewportDataService }, { type: i0.ChangeDetectorRef }] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3gudXgvc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQTRCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBc0IseUJBQXlCLEVBQW9DLE1BQU0seUJBQXlCLENBQUM7QUFDMUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQVE5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBU25CO0lBQ0E7SUFSRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDeEIsS0FBSyxDQUFVO0lBQ2YsSUFBSSxDQUFpQztJQUNyQyxRQUFRLENBQStDO0lBQ3ZELE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBRXBDLFlBQ1MsWUFBaUMsRUFDakMsR0FBc0I7UUFEdEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBRS9CLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBd0IsRUFBRSxRQUEwQztRQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUV6QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNuRixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQ0YsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDO3VHQXBDVyxnQkFBZ0I7cUdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFMNUIsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsaUJBQWlCO29CQUN2QixJQUFJLEVBQUUsS0FBSztvQkFDWCxVQUFVLEVBQUUsSUFBSTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRhcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVmlld3BvcnREYXRhQ29uZmlnLCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5TGl0ZXJhbCB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEtbWF0Y2hlclwiO1xuaW1wb3J0IHsgVmlld3BvcnREYXRhU2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEuc2VydmljZVwiO1xuXG5cbkBQaXBlKHtcblx0bmFtZTogXCJzc3ZWaWV3cG9ydERhdGFcIixcblx0cHVyZTogZmFsc2UsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0RGF0YVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuXG5cdHByaXZhdGUgbWFya0ZvclRyYW5zZm9ybSA9IHRydWU7XG5cdHByaXZhdGUgdmFsdWU6IHVua25vd247XG5cdHByaXZhdGUgZGF0YTogVmlld3BvcnREYXRhQ29uZmlnIHwgdW5kZWZpbmVkO1xuXHRwcml2YXRlIHN0cmF0ZWd5OiBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5TGl0ZXJhbCB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSBkYXRhJCQgPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSB2aWV3cG9ydERhdGE6IFZpZXdwb3J0RGF0YVNlcnZpY2UsXG5cdFx0cHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG5cdCkge1xuXHR9XG5cblx0dHJhbnNmb3JtKGRhdGE6IFZpZXdwb3J0RGF0YUNvbmZpZywgc3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3lMaXRlcmFsKTogdW5rbm93biB7XG5cdFx0aWYgKCF0aGlzLm1hcmtGb3JUcmFuc2Zvcm0gJiYgZGF0YSA9PT0gdGhpcy5kYXRhICYmIHN0cmF0ZWd5ID09PSB0aGlzLnN0cmF0ZWd5KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52YWx1ZTtcblx0XHR9XG5cdFx0dGhpcy5kYXRhID0gZGF0YTtcblx0XHR0aGlzLnN0cmF0ZWd5ID0gc3RyYXRlZ3k7XG5cblx0XHR0aGlzLmRhdGEkJC51bnN1YnNjcmliZSgpO1xuXHRcdHRoaXMuZGF0YSQkID0gdGhpcy52aWV3cG9ydERhdGEuZ2V0JChkYXRhLCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5W3N0cmF0ZWd5XSkucGlwZShcblx0XHRcdHRhcCh2YWx1ZSA9PiB7XG5cdFx0XHRcdHRoaXMubWFya0ZvclRyYW5zZm9ybSA9IHRydWU7XG5cdFx0XHRcdHRoaXMudmFsdWUgPSB2YWx1ZTtcblx0XHRcdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cdFx0XHR9KSxcblx0XHQpLnN1YnNjcmliZSgpO1xuXG5cdFx0dGhpcy5tYXJrRm9yVHJhbnNmb3JtID0gZmFsc2U7XG5cdFx0cmV0dXJuIHRoaXMudmFsdWU7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLmRhdGEkJC51bnN1YnNjcmliZSgpO1xuXHR9XG5cbn1cbiJdfQ==
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from "@angular/core";
|
|
2
|
-
import { distinctUntilChanged, map } from "rxjs";
|
|
3
|
-
import { ViewportService } from "../viewport.service";
|
|
4
|
-
import { matchViewportData } from "./viewport-data-matcher";
|
|
5
|
-
import { generateViewportRulesRangeFromDataMatcher } from "./viewport-data.utils";
|
|
6
|
-
import { VIEWPORT_OPTIONS } from "../viewport.options";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class ViewportDataService {
|
|
9
|
-
#viewport = inject(ViewportService);
|
|
10
|
-
#config = inject(VIEWPORT_OPTIONS);
|
|
11
|
-
/** Get data for match. */
|
|
12
|
-
get(dataConfig, strategy = this.#config.defaultDataMatchStrategy, sizeType = this.#viewport.sizeTypeSnapshot) {
|
|
13
|
-
return matchViewportData(dataConfig, sizeType, strategy, this.#viewport.sizeTypes, this.#viewport.sizeTypeMap);
|
|
14
|
-
}
|
|
15
|
-
/** Get data for match as observable. */
|
|
16
|
-
get$(dataConfig, strategy, throttle = true) {
|
|
17
|
-
return (throttle ? this.#viewport.sizeType$ : this.#viewport.sizeTypeSnap$).pipe(map(sizeType => this.get(dataConfig, strategy, sizeType)), distinctUntilChanged());
|
|
18
|
-
}
|
|
19
|
-
/** Generate rules based on strategies for data. */
|
|
20
|
-
generateRules(dataConfig, strategy = this.#config.defaultDataMatchStrategy) {
|
|
21
|
-
return generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, this.#viewport.sizeTypes, this.#viewport.sizeTypeMap);
|
|
22
|
-
}
|
|
23
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataService, providedIn: "root" });
|
|
25
|
-
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ViewportDataService, decorators: [{
|
|
27
|
-
type: Injectable,
|
|
28
|
-
args: [{
|
|
29
|
-
providedIn: "root",
|
|
30
|
-
}]
|
|
31
|
-
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3gudXgvc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBaUQsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUseUNBQXlDLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBS3ZELE1BQU0sT0FBTyxtQkFBbUI7SUFFdEIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNwQyxPQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFNUMsMEJBQTBCO0lBQzFCLEdBQUcsQ0FDRixVQUFpQyxFQUNqQyxXQUFzQyxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUMzRSxXQUFpQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQjtRQUVoRSxPQUFPLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxJQUFJLENBQUksVUFBaUMsRUFBRSxRQUFvQyxFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDL0UsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQzVELG9CQUFvQixFQUFFLENBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELGFBQWEsQ0FDWixVQUFpQyxFQUNqQyxXQUFzQyxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QjtRQUUzRSxPQUFPLHlDQUF5QyxDQUMvQyxVQUFVLEVBQ1YsUUFBUSxFQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FDMUIsQ0FBQztJQUNILENBQUM7dUdBakNXLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRm5CLE1BQU07OzJGQUVOLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi4vdmlld3BvcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgbWF0Y2hWaWV3cG9ydERhdGEsIFZpZXdwb3J0RGF0YUNvbmZpZywgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEtbWF0Y2hlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVWaWV3cG9ydFJ1bGVzUmFuZ2VGcm9tRGF0YU1hdGNoZXIsIFZpZXdwb3J0RGF0YVJ1bGUgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLnV0aWxzXCI7XG5pbXBvcnQgeyBWSUVXUE9SVF9PUFRJT05TIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm9wdGlvbnNcIjtcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnREYXRhU2VydmljZSB7XG5cblx0cmVhZG9ubHkgI3ZpZXdwb3J0ID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSk7XG5cdHJlYWRvbmx5ICNjb25maWcgPSBpbmplY3QoVklFV1BPUlRfT1BUSU9OUyk7XG5cblx0LyoqIEdldCBkYXRhIGZvciBtYXRjaC4gKi9cblx0Z2V0PFQ+KFxuXHRcdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcblx0XHRzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSA9IHRoaXMuI2NvbmZpZy5kZWZhdWx0RGF0YU1hdGNoU3RyYXRlZ3ksXG5cdFx0c2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvID0gdGhpcy4jdmlld3BvcnQuc2l6ZVR5cGVTbmFwc2hvdFxuXHQpOiBUIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gbWF0Y2hWaWV3cG9ydERhdGEoZGF0YUNvbmZpZywgc2l6ZVR5cGUsIHN0cmF0ZWd5LCB0aGlzLiN2aWV3cG9ydC5zaXplVHlwZXMsIHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlTWFwKTtcblx0fVxuXG5cdC8qKiBHZXQgZGF0YSBmb3IgbWF0Y2ggYXMgb2JzZXJ2YWJsZS4gKi9cblx0Z2V0JDxUPihkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sIHN0cmF0ZWd5PzogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSwgdGhyb3R0bGUgPSB0cnVlKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XG5cdFx0cmV0dXJuICh0aHJvdHRsZSA/IHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlJCA6IHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlU25hcCQpLnBpcGUoXG5cdFx0XHRtYXAoc2l6ZVR5cGUgPT4gdGhpcy5nZXQ8VD4oZGF0YUNvbmZpZywgc3RyYXRlZ3ksIHNpemVUeXBlKSksXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuXHRcdCk7XG5cdH1cblxuXHQvKiogR2VuZXJhdGUgcnVsZXMgYmFzZWQgb24gc3RyYXRlZ2llcyBmb3IgZGF0YS4gKi9cblx0Z2VuZXJhdGVSdWxlczxUPihcblx0XHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdFx0c3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kgPSB0aGlzLiNjb25maWcuZGVmYXVsdERhdGFNYXRjaFN0cmF0ZWd5LFxuXHQpOiBWaWV3cG9ydERhdGFSdWxlPFQ+W10ge1xuXHRcdHJldHVybiBnZW5lcmF0ZVZpZXdwb3J0UnVsZXNSYW5nZUZyb21EYXRhTWF0Y2hlcihcblx0XHRcdGRhdGFDb25maWcsXG5cdFx0XHRzdHJhdGVneSxcblx0XHRcdHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlcyxcblx0XHRcdHRoaXMuI3ZpZXdwb3J0LnNpemVUeXBlTWFwXG5cdFx0KTtcblx0fVxuXG59XG4iXX0=
|
|
@@ -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?.max) {
|
|
81
|
-
rule.min = prevRule.max + 1;
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
[ViewportDataMatchStrategy.closestLargerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {
|
|
85
|
-
if (nextDataSize) {
|
|
86
|
-
rule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, false);
|
|
87
|
-
}
|
|
88
|
-
if (prevRule?.max) {
|
|
89
|
-
rule.min = prevRule.max + 1;
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
function calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, isSmallerPreferred) {
|
|
94
|
-
const fn = isSmallerPreferred ? Math.ceil : Math.floor;
|
|
95
|
-
// get closest between curr and next
|
|
96
|
-
const diffIndex = fn((nextDataSize.type - dataSize.type - 1) / 2);
|
|
97
|
-
const diffNextSize = sizeTypes[dataSize.type + diffIndex];
|
|
98
|
-
return (diffNextSize || dataSize).widthThreshold;
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LnV4L3NyYy92aWV3cG9ydC92aWV3cG9ydC1kYXRhL3ZpZXdwb3J0LWRhdGEudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFzQix5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUXhGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHlDQUF5QyxDQUN4RCxVQUFpQyxFQUNqQyxRQUFtQyxFQUNuQyxTQUFpQyxFQUNqQyxXQUE2QztJQUU3QyxNQUFNLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEIsTUFBTSxLQUFLLENBQUMsaUdBQWlHLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDM0gsQ0FBQztJQUVELElBQUksU0FBUyxHQUEyQixFQUFFLENBQUM7SUFDM0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM5QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3hCLFNBQVM7WUFDVixDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1YsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFDRCxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxF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LENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uLy4uL2ludGVybmFsL2ludGVybmFsLm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNpemVUeXBlSW5mbyB9IGZyb20gXCIuLi92aWV3cG9ydC5tb2RlbFwiO1xuaW1wb3J0IHsgVmlld3BvcnREYXRhQ29uZmlnLCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5IH0gZnJvbSBcIi4vdmlld3BvcnQtZGF0YS1tYXRjaGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnREYXRhUnVsZTxUPiB7XG5cdG1pbj86IG51bWJlcjtcblx0bWF4PzogbnVtYmVyO1xuXHR2YWx1ZTogVDtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHJ1bGVzIGJhc2VkIG9uIHN0cmF0ZWdpZXMuXG4gKlxuICogQHBhcmFtIGRhdGFDb25maWcgRGF0YSBjb25maWcgdG8gZ2VuZXJhdGUgcnVsZXMgYmFzZWQgb24uXG4gKiBAcGFyYW0gc3RyYXRlZ3kgU3RyYXRlZ3kgdG8gdXNlIHdoZW4gYnVpbGRpbmcgcnVsZXMuXG4gKiBAcGFyYW0gc2l6ZVR5cGVzIEF2YWlsYWJsZSBzaXplIHR5cGVzIG9yZGVyZWQgYnkgaW5kZXggdHlwZS4gKENhbiBiZSBvYnRhaW5lZCBmcm9tIGBWaWV3cG9ydFNlcnZpY2VgKVxuICogQHBhcmFtIHNpemVUeXBlTWFwIEF2YWlsYWJsZSBzaXplIHR5cGUgbWFwLiAoQ2FuIGJlIG9idGFpbmVkIGZyb20gYFZpZXdwb3J0U2VydmljZWApXG4gKiBAcmV0dXJucyBSZXR1cm5zIGEgY29sbGVjdGlvbiBvZiBydWxlcyAob3JkZXJlZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVZpZXdwb3J0UnVsZXNSYW5nZUZyb21EYXRhTWF0Y2hlcjxUPihcblx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxuXHRzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSxcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxuXHRzaXplVHlwZU1hcDogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz4sXG4pOiBWaWV3cG9ydERhdGFSdWxlPFQ+W10ge1xuXHRjb25zdCBydWxlQnVpbGRlckZuID0gbWF0Y2hTdHJhdGVneUhhbmRsZXJNYXBbc3RyYXRlZ3ldO1xuXHRpZiAoIXJ1bGVCdWlsZGVyRm4pIHtcblx0XHR0aHJvdyBFcnJvcihgZ2VuZXJhdGVWaWV3cG9ydFJ1bGVzUmFuZ2VGcm9tRGF0YU1hdGNoZXI6IFZpZXdwb3J0IERhdGEgc3RyYXRlZ3kgbm90IGltcGxlbWVudGVkLiBTdHJhdGVneTogJyR7c3RyYXRlZ3l9J2ApO1xuXHR9XG5cblx0bGV0IGRhdGFTaXplczogVmlld3BvcnRTaXplVHlwZUluZm9bXSA9IFtdO1xuXHRmb3IgKGNvbnN0IGtleSBpbiBkYXRhQ29uZmlnKSB7XG5cdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhQ29uZmlnLCBrZXkpKSB7XG5cdFx0XHRjb25zdCBkYXRhID0gZGF0YUNvbmZpZ1trZXldO1xuXHRcdFx0aWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHNpemUgPSBzaXplVHlwZU1hcFtrZXldO1xuXHRcdFx0aWYgKHNpemUpIHtcblx0XHRcdFx0ZGF0YVNpemVzLnB1c2goc2l6ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGRhdGFTaXplcyA9IGRhdGFTaXplcy5zb3J0KCh7IHR5cGU6IHR5cGVBIH0sIHsgdHlwZTogdHlwZUIgfSkgPT4gdHlwZUEgLSB0eXBlQik7XG5cblx0Y29uc3QgcnVsZXM6IFZpZXdwb3J0RGF0YVJ1bGU8VD5bXSA9IFtdO1xuXHRpZiAoZGF0YUNvbmZpZy5kZWZhdWx0KSB7XG5cdFx0cnVsZXMucHVzaCh7IHZhbHVlOiBkYXRhQ29uZmlnLmRlZmF1bHQsIG1pbjogdW5kZWZpbmVkLCBtYXg6IHVuZGVmaW5lZCB9KTtcblx0fVxuXG5cdGxldCBwcmV2UnVsZTogVmlld3BvcnREYXRhUnVsZTxUPiB8IHVuZGVmaW5lZDtcblx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRhdGFTaXplcy5sZW5ndGg7IGluZGV4KyspIHtcblx0XHRjb25zdCBwcmV2RGF0YVNpemUgPSBkYXRhU2l6ZXNbaW5kZXggLSAxXTtcblx0XHRjb25zdCBuZXh0RGF0YVNpemUgPSBkYXRhU2l6ZXNbaW5kZXggKyAxXTtcblx0XHRjb25zdCBkYXRhU2l6ZSA9IGRhdGFTaXplc1tpbmRleF07XG5cdFx0Y29uc3QgcHJldlNpemUgPSBzaXplVHlwZXNbZGF0YVNpemUudHlwZSAtIDFdO1xuXHRcdC8vIGNvbnN0IG5leHRTaXplID0gc2l6ZVR5cGVzW2RhdGFTaXplLnR5cGUgKyAxXTtcblx0XHRjb25zdCBkYXRhID0gZGF0YUNvbmZpZ1tkYXRhU2l6ZS5uYW1lXTtcblx0XHRjb25zdCBydWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+ID0ge1xuXHRcdFx0dmFsdWU6IGRhdGEsXG5cdFx0XHRtaW46IHVuZGVmaW5lZCxcblx0XHRcdG1heDogdW5kZWZpbmVkLFxuXHRcdH07XG5cblx0XHRydWxlQnVpbGRlckZuKHJ1bGUsIGRhdGFTaXplLCBuZXh0RGF0YVNpemUsIHByZXZEYXRhU2l6ZSwgcHJldlNpemUsIHByZXZSdWxlLCBzaXplVHlwZXMpO1xuXG5cdFx0cHJldlJ1bGUgPSBydWxlO1xuXHRcdHJ1bGVzLnB1c2gocnVsZSk7XG5cdH1cblx0cmV0dXJuIHJ1bGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0UnVsZVJhbmdlQnVpbGRlcjxUID0gdW5rbm93bj4ge1xuXHQoXG5cdFx0cnVsZTogVmlld3BvcnREYXRhUnVsZTxUPixcblx0XHRkYXRhU2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdFx0bmV4dERhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyB8IHVuZGVmaW5lZCxcblx0XHRwcmV2RGF0YVNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHwgdW5kZWZpbmVkLFxuXHRcdHByZXZTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyB8IHVuZGVmaW5lZCxcblx0XHRwcmV2UnVsZTogVmlld3BvcnREYXRhUnVsZTxUPiB8IHVuZGVmaW5lZCxcblx0XHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXG5cdCk6IHZvaWQ7XG59XG5cbmNvbnN0IG1hdGNoU3RyYXRlZ3lIYW5kbGVyTWFwOiBEaWN0aW9uYXJ5PFZpZXdwb3J0UnVsZVJhbmdlQnVpbGRlcj4gPSB7XG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LmV4YWN0XTogKHJ1bGUsIGRhdGFTaXplLCBfbmV4dERhdGFTaXplLCBfcHJldkRhdGFTaXplLCBwcmV2U2l6ZSkgPT4ge1xuXHRcdHJ1bGUubWF4ID0gZGF0YVNpemUud2lkdGhUaHJlc2hvbGQ7XG5cdFx0aWYgKHByZXZTaXplKSB7XG5cdFx0XHRydWxlLm1pbiA9IHByZXZTaXplLndpZHRoVGhyZXNob2xkICsgMTtcblx0XHR9XG5cdH0sXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LnNtYWxsZXJdOiAocnVsZSwgZGF0YVNpemUsIG5leHREYXRhU2l6ZSwgX3ByZXZEYXRhU2l6ZSwgcHJldlNpemUpID0+IHtcblx0XHRpZiAobmV4dERhdGFTaXplKSB7XG5cdFx0XHRydWxlLm1heCA9IGRhdGFTaXplLndpZHRoVGhyZXNob2xkO1xuXHRcdH1cblx0XHRpZiAocHJldlNpemUpIHtcblx0XHRcdHJ1bGUubWluID0gcHJldlNpemUud2lkdGhUaHJlc2hvbGQgKyAxO1xuXHRcdH1cblx0fSxcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kubGFyZ2VyXTogKHJ1bGUsIGRhdGFTaXplLCBfbmV4dERhdGFTaXplLCBwcmV2RGF0YVNpemUpID0+IHtcblx0XHRpZiAoZGF0YVNpemUpIHtcblx0XHRcdHJ1bGUubWF4ID0gZGF0YVNpemUud2lkdGhUaHJlc2hvbGQ7XG5cdFx0fVxuXHRcdGlmIChwcmV2RGF0YVNpemUpIHtcblx0XHRcdHJ1bGUubWluID0gcHJldkRhdGFTaXplLndpZHRoVGhyZXNob2xkICsgMTtcblx0XHR9XG5cdH0sXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LmNsb3Nlc3RTbWFsbGVyRmlyc3RdOiAocnVsZSwgZGF0YVNpemUsIG5leHREYXRhU2l6ZSwgX3ByZXZEYXRhU2l6ZSwgX3ByZXZTaXplLCBwcmV2UnVsZSwgc2l6ZVR5cGVzKSA9PiB7XG5cdFx0aWYgKG5leHREYXRhU2l6ZSkge1xuXHRcdFx0cnVsZS5tYXggPSBjYWxjdWxhdGVDbG9zZXN0V2lkdGhUaHJlc2hvbGQobmV4dERhdGFTaXplLCBkYXRhU2l6ZSwgc2l6ZVR5cGVzLCB0cnVlKTtcblx0XHR9XG5cdFx0aWYgKHByZXZSdWxlPy5tYXgpIHtcblx0XHRcdHJ1bGUubWluID0gcHJldlJ1bGUubWF4ICsgMTtcblx0XHR9XG5cdH0sXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LmNsb3Nlc3RMYXJnZXJGaXJzdF06IChydWxlLCBkYXRhU2l6ZSwgbmV4dERhdGFTaXplLCBfcHJldkRhdGFTaXplLCBfcHJldlNpemUsIHByZXZSdWxlLCBzaXplVHlwZXMpID0+IHtcblx0XHRpZiAobmV4dERhdGFTaXplKSB7XG5cdFx0XHRydWxlLm1heCA9IGNhbGN1bGF0ZUNsb3Nlc3RXaWR0aFRocmVzaG9sZChuZXh0RGF0YVNpemUsIGRhdGFTaXplLCBzaXplVHlwZXMsIGZhbHNlKTtcblx0XHR9XG5cdFx0aWYgKHByZXZSdWxlPy5tYXgpIHtcblx0XHRcdHJ1bGUubWluID0gcHJldlJ1bGUubWF4ICsgMTtcblx0XHR9XG5cdH0sXG59O1xuXG5mdW5jdGlvbiBjYWxjdWxhdGVDbG9zZXN0V2lkdGhUaHJlc2hvbGQoXG5cdG5leHREYXRhU2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdGRhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxuXHRpc1NtYWxsZXJQcmVmZXJyZWQ6IGJvb2xlYW4sXG4pIHtcblx0Y29uc3QgZm4gPSBpc1NtYWxsZXJQcmVmZXJyZWQgPyBNYXRoLmNlaWwgOiBNYXRoLmZsb29yO1xuXHQvLyBnZXQgY2xvc2VzdCBiZXR3ZWVuIGN1cnIgYW5kIG5leHRcblx0Y29uc3QgZGlmZkluZGV4ID0gZm4oKG5leHREYXRhU2l6ZS50eXBlIC0gZGF0YVNpemUudHlwZSAtIDEpIC8gMik7XG5cdGNvbnN0IGRpZmZOZXh0U2l6ZSA9IHNpemVUeXBlc1tkYXRhU2l6ZS50eXBlICsgZGlmZkluZGV4XTtcblx0cmV0dXJuIChkaWZmTmV4dFNpemUgfHwgZGF0YVNpemUpLndpZHRoVGhyZXNob2xkO1xufVxuIl19
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, TemplateRef, ViewContainerRef, } from "@angular/core";
|
|
2
|
-
import { combineLatest, ReplaySubject, Subject, tap, map, takeUntil } from "rxjs";
|
|
3
|
-
import { ViewportService } from "./viewport.service";
|
|
4
|
-
import { isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, isViewportConditionMatch } from "./viewport.util";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./viewport.service";
|
|
7
|
-
const NAME_CAMEL = "ssvViewportMatcherVar";
|
|
8
|
-
export class SsvViewportMatcherVarContext {
|
|
9
|
-
$implicit;
|
|
10
|
-
constructor($implicit = false) {
|
|
11
|
-
this.$implicit = $implicit;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export class SsvViewportMatcherVarDirective {
|
|
15
|
-
viewport;
|
|
16
|
-
viewContainer;
|
|
17
|
-
templateRef;
|
|
18
|
-
_matchConditions = {};
|
|
19
|
-
_context = new SsvViewportMatcherVarContext();
|
|
20
|
-
_destroy$ = new Subject();
|
|
21
|
-
_update$ = new ReplaySubject(1);
|
|
22
|
-
_viewRef;
|
|
23
|
-
set condition(value) {
|
|
24
|
-
if (isViewportSizeMatcherExpression(value)) {
|
|
25
|
-
this._matchConditions.expression = value;
|
|
26
|
-
}
|
|
27
|
-
else if (isViewportSizeMatcherTupleExpression(value)) {
|
|
28
|
-
const [op, size] = value;
|
|
29
|
-
this._matchConditions.expression = {
|
|
30
|
-
operation: op,
|
|
31
|
-
size
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
this._matchConditions.sizeType = value;
|
|
36
|
-
}
|
|
37
|
-
this._update$.next();
|
|
38
|
-
}
|
|
39
|
-
constructor(viewport, viewContainer, templateRef) {
|
|
40
|
-
this.viewport = viewport;
|
|
41
|
-
this.viewContainer = viewContainer;
|
|
42
|
-
this.templateRef = templateRef;
|
|
43
|
-
}
|
|
44
|
-
ngOnInit() {
|
|
45
|
-
this.updateView();
|
|
46
|
-
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();
|
|
47
|
-
}
|
|
48
|
-
ngOnDestroy() {
|
|
49
|
-
this._destroy$.next();
|
|
50
|
-
this._destroy$.complete();
|
|
51
|
-
}
|
|
52
|
-
updateView() {
|
|
53
|
-
this.viewContainer.clear();
|
|
54
|
-
this._viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this._context);
|
|
55
|
-
}
|
|
56
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SsvViewportMatcherVarDirective, deps: [{ token: i1.ViewportService }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
57
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: SsvViewportMatcherVarDirective, isStandalone: true, selector: "[ssvViewportMatcherVar]", inputs: { condition: ["ssvViewportMatcherVarWhen", "condition"] }, ngImport: i0 });
|
|
58
|
-
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SsvViewportMatcherVarDirective, decorators: [{
|
|
60
|
-
type: Directive,
|
|
61
|
-
args: [{
|
|
62
|
-
selector: `[${NAME_CAMEL}]`,
|
|
63
|
-
standalone: true,
|
|
64
|
-
}]
|
|
65
|
-
}], ctorParameters: () => [{ type: i1.ViewportService }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }], propDecorators: { condition: [{
|
|
66
|
-
type: Input,
|
|
67
|
-
args: [`${NAME_CAMEL}When`]
|
|
68
|
-
}] } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtbWF0Y2hlci12YXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3gudXgvc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LW1hdGNoZXItdmFyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR04sU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsZ0JBQWdCLEdBRWhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUNOLCtCQUErQixFQUMvQixvQ0FBb0MsRUFDcEMsd0JBQXdCLEVBQ3hCLE1BQU0saUJBQWlCLENBQUM7OztBQUd6QixNQUFNLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQztBQUUzQyxNQUFNLE9BQU8sNEJBQTRCO0lBR2hDO0lBRFIsWUFDUSxZQUFZLEtBQUs7UUFBakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtJQUNyQixDQUFDO0NBRUw7QUFNRCxNQUFNLE9BQU8sOEJBQThCO0lBeUJqQztJQUNBO0lBQ0E7SUF6QkQsZ0JBQWdCLEdBQTRCLEVBQUUsQ0FBQztJQUMvQyxRQUFRLEdBQUcsSUFBSSw0QkFBNEIsRUFBRSxDQUFDO0lBQ3JDLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ2hDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLENBQWlEO0lBRWpFLElBQWdDLFNBQVMsQ0FBQyxLQUF3RDtRQUNqRyxJQUFJLCtCQUErQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksb0NBQW9DLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHO2dCQUNsQyxTQUFTLEVBQUUsRUFBRTtnQkFDYixJQUFJO2FBQ0osQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEMsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQ1MsUUFBeUIsRUFDekIsYUFBK0IsRUFDL0IsV0FBc0Q7UUFGdEQsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUEyQztJQUUvRCxDQUFDO0lBRUQsUUFBUTtRQUNQLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNELEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUN6RyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFDckMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsRUFDdkMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDekIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxVQUFVO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7dUdBakRXLDhCQUE4QjsyRkFBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUoxQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxJQUFJLFVBQVUsR0FBRztvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzZJQVNnQyxTQUFTO3NCQUF4QyxLQUFLO3VCQUFDLEdBQUcsVUFBVSxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0T25Jbml0LFxuXHRPbkRlc3Ryb3ksXG5cdERpcmVjdGl2ZSxcblx0SW5wdXQsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRFbWJlZGRlZFZpZXdSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCB0YXAsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld3BvcnQuc2VydmljZVwiO1xuaW1wb3J0IHtcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbixcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uLFxuXHRpc1ZpZXdwb3J0Q29uZGl0aW9uTWF0Y2hcbn0gZnJvbSBcIi4vdmlld3BvcnQudXRpbFwiO1xuaW1wb3J0IHsgVmlld3BvcnRNYXRjaENvbmRpdGlvbnMsIFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcblxuY29uc3QgTkFNRV9DQU1FTCA9IFwic3N2Vmlld3BvcnRNYXRjaGVyVmFyXCI7XG5cbmV4cG9ydCBjbGFzcyBTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0IHtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwdWJsaWMgJGltcGxpY2l0ID0gZmFsc2UsXG5cdCkgeyB9XG5cbn1cblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiBgWyR7TkFNRV9DQU1FTH1dYCxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU3N2Vmlld3BvcnRNYXRjaGVyVmFyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG5cdHByaXZhdGUgX21hdGNoQ29uZGl0aW9uczogVmlld3BvcnRNYXRjaENvbmRpdGlvbnMgPSB7fTtcblx0cHJpdmF0ZSBfY29udGV4dCA9IG5ldyBTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfdXBkYXRlJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuXHRwcml2YXRlIF92aWV3UmVmITogRW1iZWRkZWRWaWV3UmVmPFNzdlZpZXdwb3J0TWF0Y2hlclZhckNvbnRleHQ+O1xuXG5cdEBJbnB1dChgJHtOQU1FX0NBTUVMfVdoZW5gKSBzZXQgY29uZGl0aW9uKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uKSB7XG5cdFx0aWYgKGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24odmFsdWUpKSB7XG5cdFx0XHR0aGlzLl9tYXRjaENvbmRpdGlvbnMuZXhwcmVzc2lvbiA9IHZhbHVlO1xuXHRcdH0gZWxzZSBpZiAoaXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uKHZhbHVlKSkge1xuXHRcdFx0Y29uc3QgW29wLCBzaXplXSA9IHZhbHVlO1xuXHRcdFx0dGhpcy5fbWF0Y2hDb25kaXRpb25zLmV4cHJlc3Npb24gPSB7XG5cdFx0XHRcdG9wZXJhdGlvbjogb3AsXG5cdFx0XHRcdHNpemVcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX21hdGNoQ29uZGl0aW9ucy5zaXplVHlwZSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdHRoaXMuX3VwZGF0ZSQubmV4dCgpO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSB2aWV3cG9ydDogVmlld3BvcnRTZXJ2aWNlLFxuXHRcdHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcblx0XHRwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0Pixcblx0KSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnVwZGF0ZVZpZXcoKTtcblx0XHRjb21iaW5lTGF0ZXN0KFt0aGlzLnZpZXdwb3J0LnNpemVUeXBlJCwgdGhpcy5fdXBkYXRlJF0pLnBpcGUoXG5cdFx0XHRtYXAoKFtzaXplVHlwZV0pID0+IGlzVmlld3BvcnRDb25kaXRpb25NYXRjaChzaXplVHlwZSwgdGhpcy5fbWF0Y2hDb25kaXRpb25zLCB0aGlzLnZpZXdwb3J0LnNpemVUeXBlTWFwKSksXG5cdFx0XHR0YXAoeCA9PiB0aGlzLl9jb250ZXh0LiRpbXBsaWNpdCA9IHgpLFxuXHRcdFx0dGFwKCgpID0+IHRoaXMuX3ZpZXdSZWYubWFya0ZvckNoZWNrKCkpLFxuXHRcdFx0dGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcblx0XHQpLnN1YnNjcmliZSgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5fZGVzdHJveSQubmV4dCgpO1xuXHRcdHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVZpZXcoKTogdm9pZCB7XG5cdFx0dGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG5cdFx0dGhpcy5fdmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgdGhpcy5fY29udGV4dCk7XG5cdH1cblxufVxuIl19
|