@ssv/ngx.ux 2.1.2-dev.37 → 3.0.0-dev.32

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.
Files changed (79) hide show
  1. package/README.md +28 -114
  2. package/eslint.config.js +43 -0
  3. package/index.ts +1 -0
  4. package/jest.config.ts +21 -0
  5. package/ng-package.json +7 -0
  6. package/package.json +4 -30
  7. package/project.json +36 -0
  8. package/src/index.ts +4 -0
  9. package/src/internal/internal.model.ts +3 -0
  10. package/src/platform/window.ts +31 -0
  11. package/src/test-setup.ts +8 -0
  12. package/src/ux.module.ts +15 -0
  13. package/src/version.ts +1 -0
  14. package/src/viewport/index.ts +20 -0
  15. package/src/viewport/viewport-data/README.md +47 -0
  16. package/src/viewport/viewport-data/index.ts +3 -0
  17. package/src/viewport/viewport-data/viewport-data-matcher.spec.ts +227 -0
  18. package/src/viewport/viewport-data/viewport-data-matcher.ts +175 -0
  19. package/src/viewport/viewport-data/viewport-data.pipe.ts +51 -0
  20. package/src/viewport/viewport-data/viewport-data.service.ts +48 -0
  21. package/src/viewport/viewport-data/viewport-data.utils.spec.ts +228 -0
  22. package/src/viewport/viewport-data/viewport-data.utils.ts +137 -0
  23. package/src/viewport/viewport-matcher-var.directive.ts +85 -0
  24. package/src/viewport/viewport-matcher.directive.ts +170 -0
  25. package/src/viewport/viewport-server-size.service.ts +37 -0
  26. package/src/viewport/viewport.model.ts +54 -0
  27. package/src/viewport/viewport.module.ts +19 -0
  28. package/src/viewport/viewport.options.ts +74 -0
  29. package/src/viewport/viewport.service.ts +123 -0
  30. package/src/viewport/viewport.util.spec.ts +254 -0
  31. package/src/viewport/viewport.util.ts +152 -0
  32. package/tsconfig.json +28 -0
  33. package/tsconfig.lib.json +12 -0
  34. package/tsconfig.lib.prod.json +9 -0
  35. package/tsconfig.spec.json +11 -0
  36. package/LICENSE +0 -21
  37. package/config.d.ts +0 -7
  38. package/esm2020/config.mjs +0 -7
  39. package/esm2020/index.mjs +0 -5
  40. package/esm2020/internal/internal.model.mjs +0 -2
  41. package/esm2020/module.mjs +0 -65
  42. package/esm2020/platform/window.mjs +0 -30
  43. package/esm2020/ssv-ngx.ux.mjs +0 -5
  44. package/esm2020/version.mjs +0 -2
  45. package/esm2020/viewport/index.mjs +0 -9
  46. package/esm2020/viewport/viewport-data/index.mjs +0 -4
  47. package/esm2020/viewport/viewport-data/viewport-data-matcher.mjs +0 -108
  48. package/esm2020/viewport/viewport-data/viewport-data.pipe.mjs +0 -43
  49. package/esm2020/viewport/viewport-data/viewport-data.service.mjs +0 -37
  50. package/esm2020/viewport/viewport-data/viewport-data.utils.mjs +0 -100
  51. package/esm2020/viewport/viewport-matcher-var.directive.mjs +0 -63
  52. package/esm2020/viewport/viewport-matcher.directive.mjs +0 -131
  53. package/esm2020/viewport/viewport-server-size.service.mjs +0 -43
  54. package/esm2020/viewport/viewport.const.mjs +0 -17
  55. package/esm2020/viewport/viewport.model.mjs +0 -30
  56. package/esm2020/viewport/viewport.service.mjs +0 -66
  57. package/esm2020/viewport/viewport.util.mjs +0 -117
  58. package/fesm2015/ssv-ngx.ux.mjs +0 -826
  59. package/fesm2015/ssv-ngx.ux.mjs.map +0 -1
  60. package/fesm2020/ssv-ngx.ux.mjs +0 -820
  61. package/fesm2020/ssv-ngx.ux.mjs.map +0 -1
  62. package/index.d.ts +0 -4
  63. package/internal/internal.model.d.ts +0 -9
  64. package/module.d.ts +0 -19
  65. package/platform/window.d.ts +0 -13
  66. package/version.d.ts +0 -1
  67. package/viewport/index.d.ts +0 -8
  68. package/viewport/viewport-data/index.d.ts +0 -3
  69. package/viewport/viewport-data/viewport-data-matcher.d.ts +0 -32
  70. package/viewport/viewport-data/viewport-data.pipe.d.ts +0 -18
  71. package/viewport/viewport-data/viewport-data.service.d.ts +0 -20
  72. package/viewport/viewport-data/viewport-data.utils.d.ts +0 -21
  73. package/viewport/viewport-matcher-var.directive.d.ts +0 -25
  74. package/viewport/viewport-matcher.directive.d.ts +0 -33
  75. package/viewport/viewport-server-size.service.d.ts +0 -12
  76. package/viewport/viewport.const.d.ts +0 -5
  77. package/viewport/viewport.model.d.ts +0 -59
  78. package/viewport/viewport.service.d.ts +0 -37
  79. package/viewport/viewport.util.d.ts +0 -25
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2016
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/config.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import { InjectionToken } from "@angular/core";
2
- import { UxViewportOptions } from "./viewport/viewport.model";
3
- export interface UxOptions {
4
- viewport: UxViewportOptions;
5
- }
6
- export declare const UX_DEFAULT_CONFIG: UxOptions;
7
- export declare const UX_CONFIG: InjectionToken<UxOptions>;
@@ -1,7 +0,0 @@
1
- import { InjectionToken } from "@angular/core";
2
- import { UX_VIEWPORT_DEFAULT_CONFIG } from "./viewport/viewport.const";
3
- export const UX_DEFAULT_CONFIG = {
4
- viewport: UX_VIEWPORT_DEFAULT_CONFIG,
5
- };
6
- export const UX_CONFIG = new InjectionToken("@ssv/ngx.ux-config");
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBT3ZFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFjO0lBQzNDLFFBQVEsRUFBRSwwQkFBMEI7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBWSxvQkFBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVVhfVklFV1BPUlRfREVGQVVMVF9DT05GSUcgfSBmcm9tIFwiLi92aWV3cG9ydC92aWV3cG9ydC5jb25zdFwiO1xuaW1wb3J0IHsgVXhWaWV3cG9ydE9wdGlvbnMgfSBmcm9tIFwiLi92aWV3cG9ydC92aWV3cG9ydC5tb2RlbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFV4T3B0aW9ucyB7XG5cdHZpZXdwb3J0OiBVeFZpZXdwb3J0T3B0aW9ucztcbn1cblxuZXhwb3J0IGNvbnN0IFVYX0RFRkFVTFRfQ09ORklHOiBVeE9wdGlvbnMgPSB7XG5cdHZpZXdwb3J0OiBVWF9WSUVXUE9SVF9ERUZBVUxUX0NPTkZJRyxcbn07XG5cbmV4cG9ydCBjb25zdCBVWF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48VXhPcHRpb25zPihcIkBzc3Yvbmd4LnV4LWNvbmZpZ1wiKTtcbiJdfQ==
package/esm2020/index.mjs DELETED
@@ -1,5 +0,0 @@
1
- export * from "./viewport/index";
2
- export * from "./config";
3
- export * from "./module";
4
- export * from "./version";
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3ZpZXdwb3J0L2luZGV4XCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbmZpZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92ZXJzaW9uXCI7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvaW50ZXJuYWwubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGljdGlvbmFyeTxUPiB7XG5cdFtrZXk6IHN0cmluZ106IFQ7XG59XG5cbmV4cG9ydCB0eXBlIEVudW1EaWN0aW9uYXJ5PFRLZXkgZXh0ZW5kcyBQcm9wZXJ0eUtleSwgVFZhbHVlPiA9IHtcblx0W0sgaW4gVEtleV06IFRWYWx1ZTtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnRpYWxEZWVwPFQ+ID0ge1xuXHRbUCBpbiBrZXlvZiBUXT86IFBhcnRpYWxEZWVwPFRbUF0+O1xufTtcbiJdfQ==
@@ -1,65 +0,0 @@
1
- import { NgModule, InjectionToken, Optional } from "@angular/core";
2
- import { SsvViewportMatcherDirective, SsvViewportMatcherVarDirective } from "./viewport/index";
3
- import { UX_DEFAULT_CONFIG, UX_CONFIG } from "./config";
4
- import { WINDOW } from "./platform/window";
5
- import { ViewportDataPipe } from "./viewport/viewport-data/viewport-data.pipe";
6
- import * as i0 from "@angular/core";
7
- /** @internal */
8
- export const MODULE_CONFIG_DATA = new InjectionToken("@ssv/ngx.ux/configData");
9
- const components = [
10
- SsvViewportMatcherDirective,
11
- SsvViewportMatcherVarDirective,
12
- ViewportDataPipe,
13
- ];
14
- // todo: create module for Viewport
15
- export class SsvUxModule {
16
- static forRoot(config) {
17
- return {
18
- ngModule: SsvUxModule,
19
- providers: [
20
- { provide: MODULE_CONFIG_DATA, useValue: config },
21
- ],
22
- };
23
- }
24
- }
25
- SsvUxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SsvUxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
26
- SsvUxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SsvUxModule, declarations: [SsvViewportMatcherDirective,
27
- SsvViewportMatcherVarDirective,
28
- ViewportDataPipe], exports: [SsvViewportMatcherDirective,
29
- SsvViewportMatcherVarDirective,
30
- ViewportDataPipe] });
31
- SsvUxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SsvUxModule, providers: [
32
- { provide: UX_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },
33
- { provide: WINDOW, useFactory: _window },
34
- ] });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SsvUxModule, decorators: [{
36
- type: NgModule,
37
- args: [{
38
- declarations: [components],
39
- providers: [
40
- { provide: UX_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },
41
- { provide: WINDOW, useFactory: _window },
42
- ],
43
- exports: [...components],
44
- }]
45
- }] });
46
- /** @internal */
47
- export function _moduleConfigFactory(config) {
48
- if (!config) {
49
- return UX_DEFAULT_CONFIG;
50
- }
51
- const uxOptions = typeof config === "function" ? config() : config;
52
- const viewport = {
53
- ...UX_DEFAULT_CONFIG.viewport,
54
- ...uxOptions.viewport
55
- }; // breakpoints shouldn't be merged
56
- return { viewport };
57
- }
58
- /** @internal */
59
- export function _window() {
60
- if (typeof window !== "undefined") {
61
- return window;
62
- }
63
- return {};
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9GLE9BQU8sRUFBYSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUUvRSxnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQVksd0JBQXdCLENBQUMsQ0FBQztBQUUxRixNQUFNLFVBQVUsR0FBRztJQUNsQiwyQkFBMkI7SUFDM0IsOEJBQThCO0lBQzlCLGdCQUFnQjtDQUNoQixDQUFDO0FBRUYsbUNBQW1DO0FBU25DLE1BQU0sT0FBTyxXQUFXO0lBRXZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBZ0U7UUFDOUUsT0FBTztZQUNOLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2FBQ2pEO1NBQ0QsQ0FBQztJQUNILENBQUM7O3dHQVRXLFdBQVc7eUdBQVgsV0FBVyxpQkFkdkIsMkJBQTJCO1FBQzNCLDhCQUE4QjtRQUM5QixnQkFBZ0IsYUFGaEIsMkJBQTJCO1FBQzNCLDhCQUE4QjtRQUM5QixnQkFBZ0I7eUdBWUosV0FBVyxhQU5aO1FBQ1YsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ3RHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFO0tBQ3hDOzJGQUdXLFdBQVc7a0JBUnZCLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMsVUFBVSxDQUFDO29CQUMxQixTQUFTLEVBQUU7d0JBQ1YsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUN0RyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRTtxQkFDeEM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQ3hCOztBQWNELGdCQUFnQjtBQUNoQixNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBcUM7SUFDekUsSUFBRyxDQUFDLE1BQU0sRUFBRTtRQUNYLE9BQU8saUJBQWlCLENBQUM7S0FDekI7SUFDRCxNQUFNLFNBQVMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkUsTUFBTSxRQUFRLEdBQUc7UUFDaEIsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRO1FBQzdCLEdBQUcsU0FBUyxDQUFDLFFBQVE7S0FDckIsQ0FBQyxDQUFDLGtDQUFrQztJQUVyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDckIsQ0FBQztBQUVELGdCQUFnQjtBQUNoQixNQUFNLFVBQVUsT0FBTztJQUN0QixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtRQUNsQyxPQUFPLE1BQU0sQ0FBQztLQUNkO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFNzdlZpZXdwb3J0TWF0Y2hlckRpcmVjdGl2ZSwgU3N2Vmlld3BvcnRNYXRjaGVyVmFyRGlyZWN0aXZlIH0gZnJvbSBcIi4vdmlld3BvcnQvaW5kZXhcIjtcbmltcG9ydCB7IFV4T3B0aW9ucywgVVhfREVGQVVMVF9DT05GSUcsIFVYX0NPTkZJRyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgV0lORE9XIH0gZnJvbSBcIi4vcGxhdGZvcm0vd2luZG93XCI7XG5pbXBvcnQgeyBQYXJ0aWFsRGVlcCB9IGZyb20gXCIuL2ludGVybmFsL2ludGVybmFsLm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydERhdGFQaXBlIH0gZnJvbSBcIi4vdmlld3BvcnQvdmlld3BvcnQtZGF0YS92aWV3cG9ydC1kYXRhLnBpcGVcIjtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IE1PRFVMRV9DT05GSUdfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVeE9wdGlvbnM+KFwiQHNzdi9uZ3gudXgvY29uZmlnRGF0YVwiKTtcblxuY29uc3QgY29tcG9uZW50cyA9IFtcblx0U3N2Vmlld3BvcnRNYXRjaGVyRGlyZWN0aXZlLFxuXHRTc3ZWaWV3cG9ydE1hdGNoZXJWYXJEaXJlY3RpdmUsXG5cdFZpZXdwb3J0RGF0YVBpcGUsXG5dO1xuXG4vLyB0b2RvOiBjcmVhdGUgbW9kdWxlIGZvciBWaWV3cG9ydFxuQE5nTW9kdWxlKHtcblx0ZGVjbGFyYXRpb25zOiBbY29tcG9uZW50c10sXG5cdHByb3ZpZGVyczogW1xuXHRcdHsgcHJvdmlkZTogVVhfQ09ORklHLCB1c2VGYWN0b3J5OiBfbW9kdWxlQ29uZmlnRmFjdG9yeSwgZGVwczogW1tNT0RVTEVfQ09ORklHX0RBVEEsIG5ldyBPcHRpb25hbCgpXV0gfSxcblx0XHR7IHByb3ZpZGU6IFdJTkRPVywgdXNlRmFjdG9yeTogX3dpbmRvdyB9LFxuXHRdLFxuXHRleHBvcnRzOiBbLi4uY29tcG9uZW50c10sXG59KVxuZXhwb3J0IGNsYXNzIFNzdlV4TW9kdWxlIHtcblxuXHRzdGF0aWMgZm9yUm9vdChjb25maWc/OiBQYXJ0aWFsRGVlcDxVeE9wdGlvbnM+IHwgKCgpID0+IFBhcnRpYWxEZWVwPFV4T3B0aW9ucz4pKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTc3ZVeE1vZHVsZT4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHRuZ01vZHVsZTogU3N2VXhNb2R1bGUsXG5cdFx0XHRwcm92aWRlcnM6IFtcblx0XHRcdFx0eyBwcm92aWRlOiBNT0RVTEVfQ09ORklHX0RBVEEsIHVzZVZhbHVlOiBjb25maWcgfSxcblx0XHRcdF0sXG5cdFx0fTtcblx0fVxuXG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBfbW9kdWxlQ29uZmlnRmFjdG9yeShjb25maWc6IFV4T3B0aW9ucyB8ICgoKSA9PiBVeE9wdGlvbnMpKTogVXhPcHRpb25zIHtcblx0aWYoIWNvbmZpZykge1xuXHRcdHJldHVybiBVWF9ERUZBVUxUX0NPTkZJRztcblx0fVxuXHRjb25zdCB1eE9wdGlvbnMgPSB0eXBlb2YgY29uZmlnID09PSBcImZ1bmN0aW9uXCIgPyBjb25maWcoKSA6IGNvbmZpZztcblx0Y29uc3Qgdmlld3BvcnQgPSB7XG5cdFx0Li4uVVhfREVGQVVMVF9DT05GSUcudmlld3BvcnQsXG5cdFx0Li4udXhPcHRpb25zLnZpZXdwb3J0XG5cdH07IC8vIGJyZWFrcG9pbnRzIHNob3VsZG4ndCBiZSBtZXJnZWRcblxuXHRyZXR1cm4geyB2aWV3cG9ydCB9O1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gX3dpbmRvdygpOiB1bmtub3duIHtcblx0aWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRyZXR1cm4gd2luZG93O1xuXHR9XG5cdHJldHVybiB7fTtcbn1cbiJdfQ==
@@ -1,30 +0,0 @@
1
- import { InjectionToken, Injectable, Inject } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export const WINDOW = new InjectionToken("Window");
4
- export class WindowRef {
5
- constructor(
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
7
- window) {
8
- this.window = window;
9
- }
10
- /** Window underlying native object. */
11
- get native() {
12
- return this.window;
13
- }
14
- /** Determines whether native element is supported or not. Generally `false` when executing in SSR. */
15
- get hasNative() {
16
- return !!this.native.window;
17
- }
18
- }
19
- WindowRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WindowRef, deps: [{ token: WINDOW }], target: i0.ɵɵFactoryTarget.Injectable });
20
- WindowRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WindowRef, providedIn: "root" });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WindowRef, decorators: [{
22
- type: Injectable,
23
- args: [{
24
- providedIn: "root",
25
- }]
26
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
27
- type: Inject,
28
- args: [WINDOW]
29
- }] }]; } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsYXRmb3JtL3dpbmRvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRW5FLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBUyxRQUFRLENBQUMsQ0FBQztBQUszRCxNQUFNLE9BQU8sU0FBUztJQUVyQjtJQUNDLGlIQUFpSDtJQUN6RixNQUFXO1FBQVgsV0FBTSxHQUFOLE1BQU0sQ0FBSztJQUVwQyxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLElBQUksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLE1BQWdCLENBQUM7SUFDOUIsQ0FBQztJQUVELHNHQUFzRztJQUN0RyxJQUFJLFNBQVM7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDOztzR0FoQlcsU0FBUyxrQkFJWixNQUFNOzBHQUpILFNBQVMsY0FGVCxNQUFNOzJGQUVOLFNBQVM7a0JBSHJCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFLRSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IFdJTkRPVyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxXaW5kb3c+KFwiV2luZG93XCIpO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBXaW5kb3dSZWYge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55LCBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG5cdFx0QEluamVjdChXSU5ET1cpIHByaXZhdGUgd2luZG93OiBhbnlcblx0KSB7XG5cdH1cblxuXHQvKiogV2luZG93IHVuZGVybHlpbmcgbmF0aXZlIG9iamVjdC4gKi9cblx0Z2V0IG5hdGl2ZSgpOiBXaW5kb3cge1xuXHRcdHJldHVybiB0aGlzLndpbmRvdyBhcyBXaW5kb3c7XG5cdH1cblxuXHQvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIG5hdGl2ZSBlbGVtZW50IGlzIHN1cHBvcnRlZCBvciBub3QuIEdlbmVyYWxseSBgZmFsc2VgIHdoZW4gZXhlY3V0aW5nIGluIFNTUi4gKi9cblx0Z2V0IGhhc05hdGl2ZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm5hdGl2ZS53aW5kb3c7XG5cdH1cblxufVxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3N2LW5neC51eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zc3Ytbmd4LnV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,2 +0,0 @@
1
- export const VERSION = "2.1.2-dev.37";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiMi4xLjItZGV2LjM3XCI7XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmlld3BvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRyxPQUFPLEVBQ04sbUJBQW1CLEVBSW5CLFVBQVUsRUFHVixnQkFBZ0IsRUFFaEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi92aWV3cG9ydC1kYXRhL2luZGV4XCI7XG5cbmV4cG9ydCB7IFNzdlZpZXdwb3J0TWF0Y2hlclZhckRpcmVjdGl2ZSwgU3N2Vmlld3BvcnRNYXRjaGVyVmFyQ29udGV4dCB9IGZyb20gXCIuL3ZpZXdwb3J0LW1hdGNoZXItdmFyLmRpcmVjdGl2ZVwiO1xuZXhwb3J0IHsgU3N2Vmlld3BvcnRNYXRjaGVyRGlyZWN0aXZlLCBTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0IH0gZnJvbSBcIi4vdmlld3BvcnQtbWF0Y2hlci5kaXJlY3RpdmVcIjtcbmV4cG9ydCB7IFVYX1ZJRVdQT1JUX1NTUl9ERVZJQ0UsIFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC1zZXJ2ZXItc2l6ZS5zZXJ2aWNlXCI7XG5leHBvcnQge1xuXHRDb21wYXJpc29uT3BlcmF0aW9uLFxuXHRDb21wYXJpc29uT3BlcmF0aW9uVmFsdWVUeXBlLFxuXHRDb21wYXJpc29uT3BlcmF0aW9uTGl0ZXJhbCxcblx0Q29tcGFyaXNvbk9wZXJhdGlvbktleVR5cGUsXG5cdERldmljZVR5cGUsXG5cdFV4Vmlld3BvcnRPcHRpb25zLFxuXHRWaWV3cG9ydFNpemUsXG5cdFZpZXdwb3J0U2l6ZVR5cGUsXG5cdFZpZXdwb3J0U2l6ZVR5cGVJbmZvXG59IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XG5leHBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC5zZXJ2aWNlXCI7XG5leHBvcnQgeyBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGUgfSBmcm9tIFwiLi92aWV3cG9ydC51dGlsXCI7XG5leHBvcnQgeyBVWF9WSUVXUE9SVF9ERUZBVUxUX0JSRUFLUE9JTlRTIH0gZnJvbSBcIi4vdmlld3BvcnQuY29uc3RcIjtcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmlld3BvcnQvdmlld3BvcnQtZGF0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQXNCLHlCQUF5QixFQUFvQyxNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVmlld3BvcnREYXRhU2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEuc2VydmljZVwiO1xuZXhwb3J0IHsgVmlld3BvcnREYXRhUGlwZSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEucGlwZVwiO1xuZXhwb3J0IHsgVmlld3BvcnREYXRhQ29uZmlnLCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5TGl0ZXJhbCB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEtbWF0Y2hlclwiO1xuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS1tYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS1tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sQ0FBTixJQUFZLHlCQWVYO0FBZkQsV0FBWSx5QkFBeUI7SUFDcEMseURBQXlEO0lBQ3pELDJFQUFLLENBQUE7SUFFTCwyRkFBMkY7SUFDM0YsK0VBQU8sQ0FBQTtJQUVQLHdGQUF3RjtJQUN4Riw2RUFBTSxDQUFBO0lBRU4sbUlBQW1JO0lBQ25JLHVHQUFtQixDQUFBO0lBRW5CLGtJQUFrSTtJQUNsSSxxR0FBa0IsQ0FBQTtBQUNuQixDQUFDLEVBZlcseUJBQXlCLEtBQXpCLHlCQUF5QixRQWVwQztBQVlEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDaEMsVUFBaUMsRUFDakMsUUFBOEIsRUFDOUIsUUFBbUMsRUFDbkMsU0FBaUMsRUFDakMsV0FBNkM7SUFFN0MsTUFBTSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNiLE1BQU0sS0FBSyxDQUFDLHlFQUF5RSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0tBQ2xHO0lBQ0QsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBTSxDQUFDO0lBQ3hFLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN2QixPQUFPLElBQUksQ0FBQztLQUNaO0lBQ0QsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQzNCLENBQUM7QUFHRCxNQUFNLHVCQUF1QixHQUFvQztJQUNoRSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxFQUFFLGNBQWM7SUFDakQsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsRUFB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O0tBQ1o7SUFFRCxJQUFJLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO0lBQ3JDLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFFbkMsNERBQTREO0lBQzVELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3RELEtBQUssTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRTtZQUN2RixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxRQUFRLEVBQUU7Z0JBQ2IsSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDdkIsT0FBTyxJQUFJLENBQUM7aUJBQ1o7YUFDRDtTQUNEO0tBQ0Q7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi8uLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xuaW1wb3J0IHsgVmlld3BvcnRTaXplVHlwZUluZm8gfSBmcm9tIFwiLi4vdmlld3BvcnQubW9kZWxcIjtcblxuZXhwb3J0IHR5cGUgVmlld3BvcnREYXRhQ29uZmlnPFRWYWx1ZSA9IHVua25vd24sIFREYXRhID0gRGljdGlvbmFyeTxUVmFsdWU+PiA9IFREYXRhICYge1xuXHRkZWZhdWx0PzogVFZhbHVlXG59O1xuXG5leHBvcnQgZW51bSBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5IHtcblx0LyoqIEluZGljYXRlcyB0aGF0IHNpemUgc2hvdWxkIG1hdGNoIGV4YWN0IG9yIGRlZmF1bHQuICovXG5cdGV4YWN0LFxuXG5cdC8qKiBJbmRpY2F0ZXMgdGhhdCBzaXplIG1hdGNoZXMgd2hlbiBleGFjdCBtYXRjaCwgZmlyc3QgbWF0Y2ggc21hbGxlciAoZG93bikgb3IgZGVmYXVsdC4gKi9cblx0c21hbGxlcixcblxuXHQvKiogSW5kaWNhdGVzIHRoYXQgc2l6ZSBtYXRjaGVzIHdoZW4gZXhhY3QgbWF0Y2gsIGZpcnN0IG1hdGNoIGxhcmdlciAodXApIG9yIGRlZmF1bHQuICovXG5cdGxhcmdlcixcblxuXHQvKiogSW5kaWNhdGVzIHRoYXQgc2l6ZSBtYXRjaGVzIHdoZW4gZXhhY3QgbWF0Y2gsIG9yIGl0IHRyaWVzIGJvdGggc21hbGxlci9sYXJnZXIgKHNtYWxsZXIgaXMgcHJlZmVycmVkKSB1bnRpbCBtYXRjaCBvciBkZWZhdWx0LiAqL1xuXHRjbG9zZXN0U21hbGxlckZpcnN0LFxuXG5cdC8qKiBJbmRpY2F0ZXMgdGhhdCBzaXplIG1hdGNoZXMgd2hlbiBleGFjdCBtYXRjaCwgb3IgaXQgdHJpZXMgYm90aCBsYXJnZXIvc21hbGxlciAobGFyZ2VyIGlzIHByZWZlcnJlZCkgdW50aWwgbWF0Y2ggb3IgZGVmYXVsdC4gKi9cblx0Y2xvc2VzdExhcmdlckZpcnN0LFxufVxuZXhwb3J0IHR5cGUgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneUxpdGVyYWwgPSBrZXlvZiB0eXBlb2YgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneTtcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydERhdGFNYXRjaGVyPFQgPSB1bmtub3duPiB7XG5cdChcblx0XHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdFx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0XHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXG5cdFx0c2l6ZVR5cGVNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+LFxuXHQpOiBUIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gbWF0Y2ggZGF0YSBiYXNlZCBvbiBzdHJhdGVneSBhbmQgc2l6ZS5cbiAqXG4gKiBAcGFyYW0gZGF0YUNvbmZpZyBEYXRhIGNvbmZpZyB0byBnZW5lcmF0ZSBydWxlcyBiYXNlZCBvbi5cbiAqIEBwYXJhbSBzaXplVHlwZSBTaXplIHR5cGUgdG8gZ2V0IGRhdGEgZm9yLlxuICogQHBhcmFtIHN0cmF0ZWd5IFN0cmF0ZWd5IHRvIHVzZSB3aGVuIGJ1aWxkaW5nIHJ1bGVzLlxuICogQHBhcmFtIHNpemVUeXBlcyBBdmFpbGFibGUgc2l6ZSB0eXBlcyBvcmRlcmVkIGJ5IGluZGV4IHR5cGUuIChDYW4gYmUgb2J0YWluZWQgZnJvbSBgVmlld3BvcnRTZXJ2aWNlYClcbiAqIEBwYXJhbSBzaXplVHlwZU1hcCBBdmFpbGFibGUgc2l6ZSB0eXBlIG1hcC4gKENhbiBiZSBvYnRhaW5lZCBmcm9tIGBWaWV3cG9ydFNlcnZpY2VgKVxuICogQHJldHVybnMgUmV0dXJucyB0aGUgbWF0Y2hlZCBkYXRhIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hWaWV3cG9ydERhdGE8VD4oXG5cdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcblx0c2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxuXHRzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSxcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxuXHRzaXplVHlwZU1hcDogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz4sXG4pOiBUIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbWF0Y2hGbiA9IG1hdGNoU3RyYXRlZ3lIYW5kbGVyTWFwW3N0cmF0ZWd5XTtcblx0aWYgKCFtYXRjaEZuKSB7XG5cdFx0dGhyb3cgRXJyb3IoYG1hdGNoVmlld3BvcnREYXRhOiBWaWV3cG9ydCBEYXRhIHN0cmF0ZWd5IG5vdCBpbXBsZW1lbnRlZC4gU3RyYXRlZ3k6ICcke3N0cmF0ZWd5fSdgKTtcblx0fVxuXHRjb25zdCBkYXRhID0gbWF0Y2hGbihkYXRhQ29uZmlnLCBzaXplVHlwZSwgc2l6ZVR5cGVzLCBzaXplVHlwZU1hcCkgYXMgVDtcblx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBkYXRhO1xuXHR9XG5cdHJldHVybiBkYXRhQ29uZmlnLmRlZmF1bHQ7XG59XG5cblxuY29uc3QgbWF0Y2hTdHJhdGVneUhhbmRsZXJNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnREYXRhTWF0Y2hlcj4gPSB7XG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LmV4YWN0XTogbWF0Y2hXaXRoRXhhY3QsXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5Lmxhcmdlcl06IG1hdGNoV2l0aExhcmdlck1hdGNoLFxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5zbWFsbGVyXTogbWF0Y2hXaXRoU21hbGxlck1hdGNoLFxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5jbG9zZXN0U21hbGxlckZpcnN0XTogbWF0Y2hXaXRoQ2xvc2VzdFNtYWxsZXJGaXJzdE1hdGNoLFxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5jbG9zZXN0TGFyZ2VyRmlyc3RdOiBtYXRjaFdpdGhDbG9zZXN0TGFyZ2VyRmlyc3RNYXRjaCxcbn07XG5cbmZ1bmN0aW9uIG1hdGNoV2l0aEV4YWN0PFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG4pOiBUIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGRhdGFDb25maWdbY3VycmVudFNpemVUeXBlLm5hbWVdO1xufVxuXG5mdW5jdGlvbiBtYXRjaFdpdGhMYXJnZXJNYXRjaDxUPihcblx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxuXHRjdXJyZW50U2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXG4pOiBUIHwgdW5kZWZpbmVkIHtcblx0bGV0IGRhdGEgPSBkYXRhQ29uZmlnW2N1cnJlbnRTaXplVHlwZS5uYW1lXTtcblx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBkYXRhO1xuXHR9XG5cblx0Y29uc3QgbGFyZ2VzdFR5cGVJZHggPSBzaXplVHlwZXNbc2l6ZVR5cGVzLmxlbmd0aCAtIDFdLnR5cGU7XG5cdGlmIChjdXJyZW50U2l6ZVR5cGUudHlwZSA+PSBsYXJnZXN0VHlwZUlkeCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRmb3IgKGxldCBpbmRleCA9IGN1cnJlbnRTaXplVHlwZS50eXBlOyBpbmRleCA8IHNpemVUeXBlcy5sZW5ndGg7IGluZGV4KyspIHtcblx0XHRjb25zdCBzaXplVHlwZSA9IHNpemVUeXBlc1tpbmRleF07XG5cdFx0ZGF0YSA9IGRhdGFDb25maWdbc2l6ZVR5cGUubmFtZV07XG5cdFx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbWF0Y2hXaXRoU21hbGxlck1hdGNoPFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcbik6IFQgfCB1bmRlZmluZWQge1xuXHRsZXQgZGF0YSA9IGRhdGFDb25maWdbY3VycmVudFNpemVUeXBlLm5hbWVdO1xuXHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGRhdGE7XG5cdH1cblxuXHRpZiAoY3VycmVudFNpemVUeXBlLnR5cGUgPD0gMCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZm9yLWRpcmVjdGlvblxuXHRmb3IgKGxldCBpbmRleCA9IGN1cnJlbnRTaXplVHlwZS50eXBlOyBpbmRleCA8IHNpemVUeXBlcy5sZW5ndGg7IGluZGV4LS0pIHtcblx0XHRjb25zdCBzaXplVHlwZSA9IHNpemVUeXBlc1tpbmRleF07XG5cdFx0ZGF0YSA9IGRhdGFDb25maWdbc2l6ZVR5cGUubmFtZV07XG5cdFx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbWF0Y2hXaXRoQ2xvc2VzdFNtYWxsZXJGaXJzdE1hdGNoPFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcbik6IFQgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gY2xvc2VzdE1hdGNoKGRhdGFDb25maWcsIGN1cnJlbnRTaXplVHlwZSwgc2l6ZVR5cGVzLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hXaXRoQ2xvc2VzdExhcmdlckZpcnN0TWF0Y2g8VD4oXG5cdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcblx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxuKTogVCB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBjbG9zZXN0TWF0Y2goZGF0YUNvbmZpZywgY3VycmVudFNpemVUeXBlLCBzaXplVHlwZXMsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gY2xvc2VzdE1hdGNoPFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcblx0aXNTbWFsbGVyRmlyc3Q6IGJvb2xlYW5cbik6IFQgfCB1bmRlZmluZWQge1xuXHRsZXQgZGF0YSA9IGRhdGFDb25maWdbY3VycmVudFNpemVUeXBlLm5hbWVdO1xuXHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGRhdGE7XG5cdH1cblxuXHRsZXQgZG93bkluZGV4ID0gY3VycmVudFNpemVUeXBlLnR5cGU7XG5cdGxldCB1cEluZGV4ID0gY3VycmVudFNpemVUeXBlLnR5cGU7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItZm9yLW9mXG5cdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzaXplVHlwZXMubGVuZ3RoOyBpbmRleCsrKSB7XG5cdFx0Zm9yIChjb25zdCBpZHggb2YgaXNTbWFsbGVyRmlyc3QgPyBbLS1kb3duSW5kZXgsICsrdXBJbmRleF0gOiBbKyt1cEluZGV4LCAtLWRvd25JbmRleF0pIHtcblx0XHRcdGNvbnN0IHNpemVUeXBlID0gc2l6ZVR5cGVzW2lkeF07XG5cdFx0XHRpZiAoc2l6ZVR5cGUpIHtcblx0XHRcdFx0ZGF0YSA9IGRhdGFDb25maWdbc2l6ZVR5cGUubmFtZV07XG5cdFx0XHRcdGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -1,43 +0,0 @@
1
- import { Subscription } from "rxjs";
2
- import { tap } from "rxjs/operators";
3
- import { Pipe } from "@angular/core";
4
- import { ViewportDataMatchStrategy } from "./viewport-data-matcher";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./viewport-data.service";
7
- /* eslint-disable @angular-eslint/no-pipe-impure */
8
- export class ViewportDataPipe {
9
- constructor(viewportData, cdr) {
10
- this.viewportData = viewportData;
11
- this.cdr = cdr;
12
- this.markForTransform = true;
13
- this.data$$ = Subscription.EMPTY;
14
- }
15
- transform(data, strategy) {
16
- if (!this.markForTransform && data === this.data && strategy === this.strategy) {
17
- return this.value;
18
- }
19
- this.data = data;
20
- this.strategy = strategy;
21
- this.data$$.unsubscribe();
22
- this.data$$ = this.viewportData.get$(data, ViewportDataMatchStrategy[strategy]).pipe(tap(value => {
23
- this.markForTransform = true;
24
- this.value = value;
25
- this.cdr.markForCheck();
26
- })).subscribe();
27
- this.markForTransform = false;
28
- return this.value;
29
- }
30
- ngOnDestroy() {
31
- this.data$$.unsubscribe();
32
- }
33
- }
34
- ViewportDataPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataPipe, deps: [{ token: i1.ViewportDataService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
35
- ViewportDataPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataPipe, name: "ssvViewportData", pure: false });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataPipe, decorators: [{
37
- type: Pipe,
38
- args: [{
39
- name: "ssvViewportData",
40
- pure: false
41
- }]
42
- }], ctorParameters: function () { return [{ type: i1.ViewportDataService }, { type: i0.ChangeDetectorRef }]; } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxJQUFJLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBc0IseUJBQXlCLEVBQW9DLE1BQU0seUJBQXlCLENBQUM7OztBQUcxSCxtREFBbUQ7QUFLbkQsTUFBTSxPQUFPLGdCQUFnQjtJQVE1QixZQUNTLFlBQWlDLEVBQ2pDLEdBQXNCO1FBRHRCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVJ2QixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFJeEIsV0FBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFNcEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUF3QixFQUFFLFFBQTBDO1FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkYsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUNGLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFZCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7NkdBcENXLGdCQUFnQjsyR0FBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBSjVCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLEtBQUs7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVmlld3BvcnREYXRhQ29uZmlnLCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LCBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5TGl0ZXJhbCB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEtbWF0Y2hlclwiO1xuaW1wb3J0IHsgVmlld3BvcnREYXRhU2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEuc2VydmljZVwiO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tcGlwZS1pbXB1cmUgKi9cbkBQaXBlKHtcblx0bmFtZTogXCJzc3ZWaWV3cG9ydERhdGFcIixcblx0cHVyZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnREYXRhUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG5cblx0cHJpdmF0ZSBtYXJrRm9yVHJhbnNmb3JtID0gdHJ1ZTtcblx0cHJpdmF0ZSB2YWx1ZTogdW5rbm93bjtcblx0cHJpdmF0ZSBkYXRhOiBWaWV3cG9ydERhdGFDb25maWcgfCB1bmRlZmluZWQ7XG5cdHByaXZhdGUgc3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3lMaXRlcmFsIHwgdW5kZWZpbmVkO1xuXHRwcml2YXRlIGRhdGEkJCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHZpZXdwb3J0RGF0YTogVmlld3BvcnREYXRhU2VydmljZSxcblx0XHRwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcblx0KSB7XG5cdH1cblxuXHR0cmFuc2Zvcm0oZGF0YTogVmlld3BvcnREYXRhQ29uZmlnLCBzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneUxpdGVyYWwpOiB1bmtub3duIHtcblx0XHRpZiAoIXRoaXMubWFya0ZvclRyYW5zZm9ybSAmJiBkYXRhID09PSB0aGlzLmRhdGEgJiYgc3RyYXRlZ3kgPT09IHRoaXMuc3RyYXRlZ3kpIHtcblx0XHRcdHJldHVybiB0aGlzLnZhbHVlO1xuXHRcdH1cblx0XHR0aGlzLmRhdGEgPSBkYXRhO1xuXHRcdHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneTtcblxuXHRcdHRoaXMuZGF0YSQkLnVuc3Vic2NyaWJlKCk7XG5cdFx0dGhpcy5kYXRhJCQgPSB0aGlzLnZpZXdwb3J0RGF0YS5nZXQkKGRhdGEsIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3lbc3RyYXRlZ3ldKS5waXBlKFxuXHRcdFx0dGFwKHZhbHVlID0+IHtcblx0XHRcdFx0dGhpcy5tYXJrRm9yVHJhbnNmb3JtID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xuXHRcdFx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblx0XHRcdH0pLFxuXHRcdCkuc3Vic2NyaWJlKCk7XG5cblx0XHR0aGlzLm1hcmtGb3JUcmFuc2Zvcm0gPSBmYWxzZTtcblx0XHRyZXR1cm4gdGhpcy52YWx1ZTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuZGF0YSQkLnVuc3Vic2NyaWJlKCk7XG5cdH1cblxufVxuIl19
@@ -1,37 +0,0 @@
1
- import { Inject, Injectable } from "@angular/core";
2
- import { distinctUntilChanged, map } from "rxjs/operators";
3
- import { UX_CONFIG } from "../../config";
4
- import { matchViewportData } from "./viewport-data-matcher";
5
- import { generateViewportRulesRangeFromDataMatcher } from "./viewport-data.utils";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../viewport.service";
8
- export class ViewportDataService {
9
- constructor(viewport, config) {
10
- this.viewport = viewport;
11
- this.config = config;
12
- }
13
- /** Get data for match. */
14
- get(dataConfig, strategy = this.config.viewport.defaultDataMatchStrategy, sizeType = this.viewport.sizeTypeSnapshot) {
15
- return matchViewportData(dataConfig, sizeType, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);
16
- }
17
- /** Get data for match as observable. */
18
- get$(dataConfig, strategy, throttle = true) {
19
- return (throttle ? this.viewport.sizeType$ : this.viewport.sizeTypeSnap$).pipe(map(sizeType => this.get(dataConfig, strategy, sizeType)), distinctUntilChanged());
20
- }
21
- /** Generate rules based on strategies for data. */
22
- generateRules(dataConfig, strategy = this.config.viewport.defaultDataMatchStrategy) {
23
- return generateViewportRulesRangeFromDataMatcher(dataConfig, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);
24
- }
25
- }
26
- ViewportDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataService, deps: [{ token: i1.ViewportService }, { token: UX_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
27
- ViewportDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataService, providedIn: "root" });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ViewportDataService, decorators: [{
29
- type: Injectable,
30
- args: [{
31
- providedIn: "root",
32
- }]
33
- }], ctorParameters: function () { return [{ type: i1.ViewportService }, { type: undefined, decorators: [{
34
- type: Inject,
35
- args: [UX_CONFIG]
36
- }] }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LWRhdGEvdmlld3BvcnQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sY0FBYyxDQUFDO0FBSXBELE9BQU8sRUFBRSxpQkFBaUIsRUFBaUQsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUseUNBQXlDLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7OztBQUtwRyxNQUFNLE9BQU8sbUJBQW1CO0lBRS9CLFlBQ1MsUUFBeUIsRUFDTixNQUFpQjtRQURwQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUNOLFdBQU0sR0FBTixNQUFNLENBQVc7SUFFN0MsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixHQUFHLENBQ0YsVUFBaUMsRUFDakMsV0FBc0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQ25GLFdBQWlDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO1FBRS9ELE9BQU8saUJBQWlCLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLElBQUksQ0FBSSxVQUFpQyxFQUFFLFFBQW9DLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDL0YsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUM3RSxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFDNUQsb0JBQW9CLEVBQUUsQ0FDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsYUFBYSxDQUNaLFVBQWlDLEVBQ2pDLFdBQXNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHdCQUF3QjtRQUVuRixPQUFPLHlDQUF5QyxDQUMvQyxVQUFVLEVBQ1YsUUFBUSxFQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDekIsQ0FBQztJQUNILENBQUM7O2dIQXBDVyxtQkFBbUIsaURBSXRCLFNBQVM7b0hBSk4sbUJBQW1CLGNBRm5CLE1BQU07MkZBRU4sbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBS0UsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgVVhfQ09ORklHLCBVeE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XG5cbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi4vdmlld3BvcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgbWF0Y2hWaWV3cG9ydERhdGEsIFZpZXdwb3J0RGF0YUNvbmZpZywgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEtbWF0Y2hlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVWaWV3cG9ydFJ1bGVzUmFuZ2VGcm9tRGF0YU1hdGNoZXIsIFZpZXdwb3J0RGF0YVJ1bGUgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLnV0aWxzXCI7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0RGF0YVNlcnZpY2Uge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgdmlld3BvcnQ6IFZpZXdwb3J0U2VydmljZSxcblx0XHRASW5qZWN0KFVYX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFV4T3B0aW9ucyxcblx0KSB7XG5cdH1cblxuXHQvKiogR2V0IGRhdGEgZm9yIG1hdGNoLiAqL1xuXHRnZXQ8VD4oXG5cdFx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxuXHRcdHN0cmF0ZWd5OiBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5ID0gdGhpcy5jb25maWcudmlld3BvcnQuZGVmYXVsdERhdGFNYXRjaFN0cmF0ZWd5LFxuXHRcdHNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyA9IHRoaXMudmlld3BvcnQuc2l6ZVR5cGVTbmFwc2hvdFxuXHQpOiBUIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gbWF0Y2hWaWV3cG9ydERhdGEoZGF0YUNvbmZpZywgc2l6ZVR5cGUsIHN0cmF0ZWd5LCB0aGlzLnZpZXdwb3J0LnNpemVUeXBlcywgdGhpcy52aWV3cG9ydC5zaXplVHlwZU1hcCk7XG5cdH1cblxuXHQvKiogR2V0IGRhdGEgZm9yIG1hdGNoIGFzIG9ic2VydmFibGUuICovXG5cdGdldCQ8VD4oZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LCBzdHJhdGVneT86IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3ksIHRocm90dGxlID0gdHJ1ZSk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuXHRcdHJldHVybiAodGhyb3R0bGUgPyB0aGlzLnZpZXdwb3J0LnNpemVUeXBlJCA6IHRoaXMudmlld3BvcnQuc2l6ZVR5cGVTbmFwJCkucGlwZShcblx0XHRcdG1hcChzaXplVHlwZSA9PiB0aGlzLmdldDxUPihkYXRhQ29uZmlnLCBzdHJhdGVneSwgc2l6ZVR5cGUpKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG5cdFx0KTtcblx0fVxuXG5cdC8qKiBHZW5lcmF0ZSBydWxlcyBiYXNlZCBvbiBzdHJhdGVnaWVzIGZvciBkYXRhLiAqL1xuXHRnZW5lcmF0ZVJ1bGVzPFQ+KFxuXHRcdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcblx0XHRzdHJhdGVneTogVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSA9IHRoaXMuY29uZmlnLnZpZXdwb3J0LmRlZmF1bHREYXRhTWF0Y2hTdHJhdGVneSxcblx0KTogVmlld3BvcnREYXRhUnVsZTxUPltdIHtcblx0XHRyZXR1cm4gZ2VuZXJhdGVWaWV3cG9ydFJ1bGVzUmFuZ2VGcm9tRGF0YU1hdGNoZXIoXG5cdFx0XHRkYXRhQ29uZmlnLFxuXHRcdFx0c3RyYXRlZ3ksXG5cdFx0XHR0aGlzLnZpZXdwb3J0LnNpemVUeXBlcyxcblx0XHRcdHRoaXMudmlld3BvcnQuc2l6ZVR5cGVNYXBcblx0XHQpO1xuXHR9XG5cbn1cbiJdfQ==
@@ -1,100 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy92aWV3cG9ydC92aWV3cG9ydC1kYXRhL3ZpZXdwb3J0LWRhdGEudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFzQix5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUXhGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHlDQUF5QyxDQUN4RCxVQUFpQyxFQUNqQyxRQUFtQyxFQUNuQyxTQUFpQyxFQUNqQyxXQUE2QztJQUU3QyxNQUFNLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ25CLE1BQU0sS0FBSyxDQUFDLGlHQUFpRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0tBQzFIO0lBRUQsSUFBSSxTQUFTLEdBQTJCLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtRQUM3QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDdkIsU0FBUzthQUNUO1lBQ0QsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksSUFBSSxFQUFFO2dCQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckI7U0FDRDtLQUNEO0lBQ0QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBRWhGLE1BQU0sS0FBSyxHQUEwQixFQUFFLENBQUM7SUFDeEMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO1FBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQzFFO0lBRUQsSUFBSSxRQUF5QyxDQUFDO0lBQzlDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3RELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUMsaURBQWlEO1FBQ2pELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQXdCO1lBQ2pDLEtBQUssRUFBRSxJQUFJO1lBQ1gsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztTQUNkLENBQUM7UUFFRixhQUFhLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFekYsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2pCO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBY0QsTUFBTSx1QkFBdUIsR0FBeUM7SUFDckUsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUM3RixJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDbkMsSUFBSSxRQUFRLEVBQUU7WUFDYixJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0YsQ0FBQztJQUNELENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDOUYsSUFBSSxZQUFZLEVBQUU7WUFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxRQUFRLEVBQUU7WUFDYixJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0YsQ0FBQztJQUNELENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRTtRQUNuRixJQUFJLFFBQVEsRUFBRTtZQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQztTQUNuQztRQUNELElBQUksWUFBWSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7U0FDM0M7SUFDRixDQUFDO0lBQ0QsQ0FBQyx5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUU7UUFDaEksSUFBSSxZQUFZLEVBQUU7WUFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNuRjtRQUNELElBQUksUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO0lBQ0YsQ0FBQztJQUNELENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFO1FBQy9ILElBQUksWUFBWSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsOEJBQThCLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDcEY7UUFDRCxJQUFJLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUM1QjtJQUNGLENBQUM7Q0FDRCxDQUFDO0FBRUYsU0FBUyw4QkFBOEIsQ0FDdEMsWUFBa0MsRUFDbEMsUUFBOEIsRUFDOUIsU0FBaUMsRUFDakMsa0JBQTJCO0lBRTNCLE1BQU0sRUFBRSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3ZELG9DQUFvQztJQUNwQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEUsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDMUQsT0FBTyxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tIFwiLi4vLi4vaW50ZXJuYWwvaW50ZXJuYWwubW9kZWxcIjtcbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIH0gZnJvbSBcIi4uL3ZpZXdwb3J0Lm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydERhdGFDb25maWcsIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLW1hdGNoZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydERhdGFSdWxlPFQ+IHtcblx0bWluPzogbnVtYmVyO1xuXHRtYXg/OiBudW1iZXI7XG5cdHZhbHVlOiBUO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgcnVsZXMgYmFzZWQgb24gc3RyYXRlZ2llcy5cbiAqXG4gKiBAcGFyYW0gZGF0YUNvbmZpZyBEYXRhIGNvbmZpZyB0byBnZW5lcmF0ZSBydWxlcyBiYXNlZCBvbi5cbiAqIEBwYXJhbSBzdHJhdGVneSBTdHJhdGVneSB0byB1c2Ugd2hlbiBidWlsZGluZyBydWxlcy5cbiAqIEBwYXJhbSBzaXplVHlwZXMgQXZhaWxhYmxlIHNpemUgdHlwZXMgb3JkZXJlZCBieSBpbmRleCB0eXBlLiAoQ2FuIGJlIG9idGFpbmVkIGZyb20gYFZpZXdwb3J0U2VydmljZWApXG4gKiBAcGFyYW0gc2l6ZVR5cGVNYXAgQXZhaWxhYmxlIHNpemUgdHlwZSBtYXAuIChDYW4gYmUgb2J0YWluZWQgZnJvbSBgVmlld3BvcnRTZXJ2aWNlYClcbiAqIEByZXR1cm5zIFJldHVybnMgYSBjb2xsZWN0aW9uIG9mIHJ1bGVzIChvcmRlcmVkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVmlld3BvcnRSdWxlc1JhbmdlRnJvbURhdGFNYXRjaGVyPFQ+KFxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXG5cdHN0cmF0ZWd5OiBWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LFxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXG5cdHNpemVUeXBlTWFwOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPixcbik6IFZpZXdwb3J0RGF0YVJ1bGU8VD5bXSB7XG5cdGNvbnN0IHJ1bGVCdWlsZGVyRm4gPSBtYXRjaFN0cmF0ZWd5SGFuZGxlck1hcFtzdHJhdGVneV07XG5cdGlmICghcnVsZUJ1aWxkZXJGbikge1xuXHRcdHRocm93IEVycm9yKGBnZW5lcmF0ZVZpZXdwb3J0UnVsZXNSYW5nZUZyb21EYXRhTWF0Y2hlcjogVmlld3BvcnQgRGF0YSBzdHJhdGVneSBub3QgaW1wbGVtZW50ZWQuIFN0cmF0ZWd5OiAnJHtzdHJhdGVneX0nYCk7XG5cdH1cblxuXHRsZXQgZGF0YVNpemVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdID0gW107XG5cdGZvciAoY29uc3Qga2V5IGluIGRhdGFDb25maWcpIHtcblx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGFDb25maWcsIGtleSkpIHtcblx0XHRcdGNvbnN0IGRhdGEgPSBkYXRhQ29uZmlnW2tleV07XG5cdFx0XHRpZiAoZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc2l6ZSA9IHNpemVUeXBlTWFwW2tleV07XG5cdFx0XHRpZiAoc2l6ZSkge1xuXHRcdFx0XHRkYXRhU2l6ZXMucHVzaChzaXplKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0ZGF0YVNpemVzID0gZGF0YVNpemVzLnNvcnQoKHsgdHlwZTogdHlwZUEgfSwgeyB0eXBlOiB0eXBlQiB9KSA9PiB0eXBlQSAtIHR5cGVCKTtcblxuXHRjb25zdCBydWxlczogVmlld3BvcnREYXRhUnVsZTxUPltdID0gW107XG5cdGlmIChkYXRhQ29uZmlnLmRlZmF1bHQpIHtcblx0XHRydWxlcy5wdXNoKHsgdmFsdWU6IGRhdGFDb25maWcuZGVmYXVsdCwgbWluOiB1bmRlZmluZWQsIG1heDogdW5kZWZpbmVkIH0pO1xuXHR9XG5cblx0bGV0IHByZXZSdWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+IHwgdW5kZWZpbmVkO1xuXHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YVNpemVzLmxlbmd0aDsgaW5kZXgrKykge1xuXHRcdGNvbnN0IHByZXZEYXRhU2l6ZSA9IGRhdGFTaXplc1tpbmRleCAtIDFdO1xuXHRcdGNvbnN0IG5leHREYXRhU2l6ZSA9IGRhdGFTaXplc1tpbmRleCArIDFdO1xuXHRcdGNvbnN0IGRhdGFTaXplID0gZGF0YVNpemVzW2luZGV4XTtcblx0XHRjb25zdCBwcmV2U2l6ZSA9IHNpemVUeXBlc1tkYXRhU2l6ZS50eXBlIC0gMV07XG5cdFx0Ly8gY29uc3QgbmV4dFNpemUgPSBzaXplVHlwZXNbZGF0YVNpemUudHlwZSArIDFdO1xuXHRcdGNvbnN0IGRhdGEgPSBkYXRhQ29uZmlnW2RhdGFTaXplLm5hbWVdO1xuXHRcdGNvbnN0IHJ1bGU6IFZpZXdwb3J0RGF0YVJ1bGU8VD4gPSB7XG5cdFx0XHR2YWx1ZTogZGF0YSxcblx0XHRcdG1pbjogdW5kZWZpbmVkLFxuXHRcdFx0bWF4OiB1bmRlZmluZWQsXG5cdFx0fTtcblxuXHRcdHJ1bGVCdWlsZGVyRm4ocnVsZSwgZGF0YVNpemUsIG5leHREYXRhU2l6ZSwgcHJldkRhdGFTaXplLCBwcmV2U2l6ZSwgcHJldlJ1bGUsIHNpemVUeXBlcyk7XG5cblx0XHRwcmV2UnVsZSA9IHJ1bGU7XG5cdFx0cnVsZXMucHVzaChydWxlKTtcblx0fVxuXHRyZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRSdWxlUmFuZ2VCdWlsZGVyPFQgPSB1bmtub3duPiB7XG5cdChcblx0XHRydWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+LFxuXHRcdGRhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0XHRuZXh0RGF0YVNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHwgdW5kZWZpbmVkLFxuXHRcdHByZXZEYXRhU2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8gfCB1bmRlZmluZWQsXG5cdFx0cHJldlNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHwgdW5kZWZpbmVkLFxuXHRcdHByZXZSdWxlOiBWaWV3cG9ydERhdGFSdWxlPFQ+IHwgdW5kZWZpbmVkLFxuXHRcdHNpemVUeXBlczogVmlld3BvcnRTaXplVHlwZUluZm9bXSxcblx0KTogdm9pZDtcbn1cblxuY29uc3QgbWF0Y2hTdHJhdGVneUhhbmRsZXJNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRSdWxlUmFuZ2VCdWlsZGVyPiA9IHtcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuZXhhY3RdOiAocnVsZSwgZGF0YVNpemUsIF9uZXh0RGF0YVNpemUsIF9wcmV2RGF0YVNpemUsIHByZXZTaXplKSA9PiB7XG5cdFx0cnVsZS5tYXggPSBkYXRhU2l6ZS53aWR0aFRocmVzaG9sZDtcblx0XHRpZiAocHJldlNpemUpIHtcblx0XHRcdHJ1bGUubWluID0gcHJldlNpemUud2lkdGhUaHJlc2hvbGQgKyAxO1xuXHRcdH1cblx0fSxcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuc21hbGxlcl06IChydWxlLCBkYXRhU2l6ZSwgbmV4dERhdGFTaXplLCBfcHJldkRhdGFTaXplLCBwcmV2U2l6ZSkgPT4ge1xuXHRcdGlmIChuZXh0RGF0YVNpemUpIHtcblx0XHRcdHJ1bGUubWF4ID0gZGF0YVNpemUud2lkdGhUaHJlc2hvbGQ7XG5cdFx0fVxuXHRcdGlmIChwcmV2U2l6ZSkge1xuXHRcdFx0cnVsZS5taW4gPSBwcmV2U2l6ZS53aWR0aFRocmVzaG9sZCArIDE7XG5cdFx0fVxuXHR9LFxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5sYXJnZXJdOiAocnVsZSwgZGF0YVNpemUsIF9uZXh0RGF0YVNpemUsIHByZXZEYXRhU2l6ZSkgPT4ge1xuXHRcdGlmIChkYXRhU2l6ZSkge1xuXHRcdFx0cnVsZS5tYXggPSBkYXRhU2l6ZS53aWR0aFRocmVzaG9sZDtcblx0XHR9XG5cdFx0aWYgKHByZXZEYXRhU2l6ZSkge1xuXHRcdFx0cnVsZS5taW4gPSBwcmV2RGF0YVNpemUud2lkdGhUaHJlc2hvbGQgKyAxO1xuXHRcdH1cblx0fSxcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuY2xvc2VzdFNtYWxsZXJGaXJzdF06IChydWxlLCBkYXRhU2l6ZSwgbmV4dERhdGFTaXplLCBfcHJldkRhdGFTaXplLCBfcHJldlNpemUsIHByZXZSdWxlLCBzaXplVHlwZXMpID0+IHtcblx0XHRpZiAobmV4dERhdGFTaXplKSB7XG5cdFx0XHRydWxlLm1heCA9IGNhbGN1bGF0ZUNsb3Nlc3RXaWR0aFRocmVzaG9sZChuZXh0RGF0YVNpemUsIGRhdGFTaXplLCBzaXplVHlwZXMsIHRydWUpO1xuXHRcdH1cblx0XHRpZiAocHJldlJ1bGU/Lm1heCkge1xuXHRcdFx0cnVsZS5taW4gPSBwcmV2UnVsZS5tYXggKyAxO1xuXHRcdH1cblx0fSxcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuY2xvc2VzdExhcmdlckZpcnN0XTogKHJ1bGUsIGRhdGFTaXplLCBuZXh0RGF0YVNpemUsIF9wcmV2RGF0YVNpemUsIF9wcmV2U2l6ZSwgcHJldlJ1bGUsIHNpemVUeXBlcykgPT4ge1xuXHRcdGlmIChuZXh0RGF0YVNpemUpIHtcblx0XHRcdHJ1bGUubWF4ID0gY2FsY3VsYXRlQ2xvc2VzdFdpZHRoVGhyZXNob2xkKG5leHREYXRhU2l6ZSwgZGF0YVNpemUsIHNpemVUeXBlcywgZmFsc2UpO1xuXHRcdH1cblx0XHRpZiAocHJldlJ1bGU/Lm1heCkge1xuXHRcdFx0cnVsZS5taW4gPSBwcmV2UnVsZS5tYXggKyAxO1xuXHRcdH1cblx0fSxcbn07XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUNsb3Nlc3RXaWR0aFRocmVzaG9sZChcblx0bmV4dERhdGFTaXplOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcblx0ZGF0YVNpemU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXG5cdGlzU21hbGxlclByZWZlcnJlZDogYm9vbGVhbixcbikge1xuXHRjb25zdCBmbiA9IGlzU21hbGxlclByZWZlcnJlZCA/IE1hdGguY2VpbCA6IE1hdGguZmxvb3I7XG5cdC8vIGdldCBjbG9zZXN0IGJldHdlZW4gY3VyciBhbmQgbmV4dFxuXHRjb25zdCBkaWZmSW5kZXggPSBmbigobmV4dERhdGFTaXplLnR5cGUgLSBkYXRhU2l6ZS50eXBlIC0gMSkgLyAyKTtcblx0Y29uc3QgZGlmZk5leHRTaXplID0gc2l6ZVR5cGVzW2RhdGFTaXplLnR5cGUgKyBkaWZmSW5kZXhdO1xuXHRyZXR1cm4gKGRpZmZOZXh0U2l6ZSB8fCBkYXRhU2l6ZSkud2lkdGhUaHJlc2hvbGQ7XG59XG4iXX0=
@@ -1,63 +0,0 @@
1
- import { Directive, Input, } from "@angular/core";
2
- import { combineLatest, ReplaySubject, Subject } from "rxjs";
3
- import { tap, map, takeUntil } from "rxjs/operators";
4
- import { isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, isViewportConditionMatch } from "./viewport.util";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./viewport.service";
7
- const NAME_CAMEL = "ssvViewportMatcherVar";
8
- export class SsvViewportMatcherVarContext {
9
- constructor($implicit = false) {
10
- this.$implicit = $implicit;
11
- }
12
- }
13
- export class SsvViewportMatcherVarDirective {
14
- constructor(viewport, viewContainer, templateRef) {
15
- this.viewport = viewport;
16
- this.viewContainer = viewContainer;
17
- this.templateRef = templateRef;
18
- this._matchConditions = {};
19
- this._context = new SsvViewportMatcherVarContext();
20
- this._destroy$ = new Subject();
21
- this._update$ = new ReplaySubject(1);
22
- }
23
- set condition(value) {
24
- if (isViewportSizeMatcherExpression(value)) {
25
- this._matchConditions.expression = value;
26
- }
27
- else if (isViewportSizeMatcherTupleExpression(value)) {
28
- const [op, size] = value;
29
- this._matchConditions.expression = {
30
- operation: op,
31
- size
32
- };
33
- }
34
- else {
35
- this._matchConditions.sizeType = value;
36
- }
37
- this._update$.next();
38
- }
39
- ngOnInit() {
40
- this.updateView();
41
- combineLatest([this.viewport.sizeType$, this._update$]).pipe(map(([sizeType]) => isViewportConditionMatch(sizeType, this._matchConditions, this.viewport.sizeTypeMap)), tap(x => this._context.$implicit = x), tap(() => this._viewRef.markForCheck()), takeUntil(this._destroy$)).subscribe();
42
- }
43
- ngOnDestroy() {
44
- this._destroy$.next();
45
- this._destroy$.complete();
46
- }
47
- updateView() {
48
- this.viewContainer.clear();
49
- this._viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this._context);
50
- }
51
- }
52
- SsvViewportMatcherVarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SsvViewportMatcherVarDirective, deps: [{ token: i1.ViewportService }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
53
- SsvViewportMatcherVarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SsvViewportMatcherVarDirective, selector: "[ssvViewportMatcherVar]", inputs: { condition: ["ssvViewportMatcherVarWhen", "condition"] }, ngImport: i0 });
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SsvViewportMatcherVarDirective, decorators: [{
55
- type: Directive,
56
- args: [{
57
- selector: `[${NAME_CAMEL}]`,
58
- }]
59
- }], ctorParameters: function () { return [{ type: i1.ViewportService }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { condition: [{
60
- type: Input,
61
- args: [`${NAME_CAMEL}When`]
62
- }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtbWF0Y2hlci12YXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ZpZXdwb3J0L3ZpZXdwb3J0LW1hdGNoZXItdmFyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR04sU0FBUyxFQUNULEtBQUssR0FJTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckQsT0FBTyxFQUNOLCtCQUErQixFQUMvQixvQ0FBb0MsRUFDcEMsd0JBQXdCLEVBQ3hCLE1BQU0saUJBQWlCLENBQUM7OztBQUd6QixNQUFNLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQztBQUUzQyxNQUFNLE9BQU8sNEJBQTRCO0lBRXhDLFlBQ1EsWUFBWSxLQUFLO1FBQWpCLGNBQVMsR0FBVCxTQUFTLENBQVE7SUFDckIsQ0FBQztDQUVMO0FBS0QsTUFBTSxPQUFPLDhCQUE4QjtJQXdCMUMsWUFDUyxRQUF5QixFQUN6QixhQUErQixFQUMvQixXQUFzRDtRQUZ0RCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQTJDO1FBekJ2RCxxQkFBZ0IsR0FBNEIsRUFBRSxDQUFDO1FBQy9DLGFBQVEsR0FBRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7UUFDckMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFPLENBQUMsQ0FBQyxDQUFDO0lBd0J2RCxDQUFDO0lBckJELElBQWdDLFNBQVMsQ0FBQyxLQUF3RDtRQUNqRyxJQUFJLCtCQUErQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxvQ0FBb0MsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RCxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHO2dCQUNsQyxTQUFTLEVBQUUsRUFBRTtnQkFDYixJQUFJO2FBQ0osQ0FBQztTQUNGO2FBQU07WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQVNELFFBQVE7UUFDUCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRCxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDekcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQ3ZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ3pCLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sVUFBVTtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RixDQUFDOzsySEFqRFcsOEJBQThCOytHQUE5Qiw4QkFBOEI7MkZBQTlCLDhCQUE4QjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsSUFBSSxVQUFVLEdBQUc7aUJBQzNCOytKQVNnQyxTQUFTO3NCQUF4QyxLQUFLO3VCQUFDLEdBQUcsVUFBVSxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0T25Jbml0LFxuXHRPbkRlc3Ryb3ksXG5cdERpcmVjdGl2ZSxcblx0SW5wdXQsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRFbWJlZGRlZFZpZXdSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRhcCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld3BvcnQuc2VydmljZVwiO1xuaW1wb3J0IHtcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbixcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uLFxuXHRpc1ZpZXdwb3J0Q29uZGl0aW9uTWF0Y2hcbn0gZnJvbSBcIi4vdmlld3BvcnQudXRpbFwiO1xuaW1wb3J0IHsgVmlld3BvcnRNYXRjaENvbmRpdGlvbnMsIFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcblxuY29uc3QgTkFNRV9DQU1FTCA9IFwic3N2Vmlld3BvcnRNYXRjaGVyVmFyXCI7XG5cbmV4cG9ydCBjbGFzcyBTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0IHtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwdWJsaWMgJGltcGxpY2l0ID0gZmFsc2UsXG5cdCkgeyB9XG5cbn1cblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiBgWyR7TkFNRV9DQU1FTH1dYCxcbn0pXG5leHBvcnQgY2xhc3MgU3N2Vmlld3BvcnRNYXRjaGVyVmFyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG5cdHByaXZhdGUgX21hdGNoQ29uZGl0aW9uczogVmlld3BvcnRNYXRjaENvbmRpdGlvbnMgPSB7fTtcblx0cHJpdmF0ZSBfY29udGV4dCA9IG5ldyBTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfdXBkYXRlJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuXHRwcml2YXRlIF92aWV3UmVmITogRW1iZWRkZWRWaWV3UmVmPFNzdlZpZXdwb3J0TWF0Y2hlclZhckNvbnRleHQ+O1xuXG5cdEBJbnB1dChgJHtOQU1FX0NBTUVMfVdoZW5gKSBzZXQgY29uZGl0aW9uKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uKSB7XG5cdFx0aWYgKGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24odmFsdWUpKSB7XG5cdFx0XHR0aGlzLl9tYXRjaENvbmRpdGlvbnMuZXhwcmVzc2lvbiA9IHZhbHVlO1xuXHRcdH0gZWxzZSBpZiAoaXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uKHZhbHVlKSkge1xuXHRcdFx0Y29uc3QgW29wLCBzaXplXSA9IHZhbHVlO1xuXHRcdFx0dGhpcy5fbWF0Y2hDb25kaXRpb25zLmV4cHJlc3Npb24gPSB7XG5cdFx0XHRcdG9wZXJhdGlvbjogb3AsXG5cdFx0XHRcdHNpemVcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX21hdGNoQ29uZGl0aW9ucy5zaXplVHlwZSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdHRoaXMuX3VwZGF0ZSQubmV4dCgpO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSB2aWV3cG9ydDogVmlld3BvcnRTZXJ2aWNlLFxuXHRcdHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcblx0XHRwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxTc3ZWaWV3cG9ydE1hdGNoZXJWYXJDb250ZXh0Pixcblx0KSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnVwZGF0ZVZpZXcoKTtcblx0XHRjb21iaW5lTGF0ZXN0KFt0aGlzLnZpZXdwb3J0LnNpemVUeXBlJCwgdGhpcy5fdXBkYXRlJF0pLnBpcGUoXG5cdFx0XHRtYXAoKFtzaXplVHlwZV0pID0+IGlzVmlld3BvcnRDb25kaXRpb25NYXRjaChzaXplVHlwZSwgdGhpcy5fbWF0Y2hDb25kaXRpb25zLCB0aGlzLnZpZXdwb3J0LnNpemVUeXBlTWFwKSksXG5cdFx0XHR0YXAoeCA9PiB0aGlzLl9jb250ZXh0LiRpbXBsaWNpdCA9IHgpLFxuXHRcdFx0dGFwKCgpID0+IHRoaXMuX3ZpZXdSZWYubWFya0ZvckNoZWNrKCkpLFxuXHRcdFx0dGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcblx0XHQpLnN1YnNjcmliZSgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5fZGVzdHJveSQubmV4dCgpO1xuXHRcdHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVZpZXcoKTogdm9pZCB7XG5cdFx0dGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG5cdFx0dGhpcy5fdmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgdGhpcy5fY29udGV4dCk7XG5cdH1cblxufVxuIl19