@ssv/ngx.ux 2.0.2 → 2.1.0-dev.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +297 -297
  3. package/config.d.ts +7 -7
  4. package/esm2020/config.mjs +7 -7
  5. package/esm2020/index.mjs +5 -5
  6. package/esm2020/internal/internal.model.mjs +2 -2
  7. package/esm2020/module.mjs +65 -65
  8. package/esm2020/platform/window.mjs +30 -30
  9. package/esm2020/ssv-ngx.ux.mjs +4 -4
  10. package/esm2020/version.mjs +2 -2
  11. package/esm2020/viewport/index.mjs +9 -9
  12. package/esm2020/viewport/viewport-data/index.mjs +4 -4
  13. package/esm2020/viewport/viewport-data/viewport-data-matcher.mjs +108 -108
  14. package/esm2020/viewport/viewport-data/viewport-data.pipe.mjs +43 -43
  15. package/esm2020/viewport/viewport-data/viewport-data.service.mjs +37 -37
  16. package/esm2020/viewport/viewport-data/viewport-data.utils.mjs +100 -100
  17. package/esm2020/viewport/viewport-matcher-var.directive.mjs +63 -63
  18. package/esm2020/viewport/viewport-matcher.directive.mjs +131 -131
  19. package/esm2020/viewport/viewport-server-size.service.mjs +43 -43
  20. package/esm2020/viewport/viewport.const.mjs +18 -18
  21. package/esm2020/viewport/viewport.model.mjs +31 -31
  22. package/esm2020/viewport/viewport.service.mjs +66 -67
  23. package/esm2020/viewport/viewport.util.mjs +117 -117
  24. package/fesm2015/ssv-ngx.ux.mjs +789 -790
  25. package/fesm2015/ssv-ngx.ux.mjs.map +1 -1
  26. package/fesm2020/ssv-ngx.ux.mjs +783 -784
  27. package/fesm2020/ssv-ngx.ux.mjs.map +1 -1
  28. package/index.d.ts +4 -4
  29. package/internal/internal.model.d.ts +9 -9
  30. package/module.d.ts +19 -19
  31. package/package.json +1 -1
  32. package/platform/window.d.ts +13 -13
  33. package/version.d.ts +1 -1
  34. package/viewport/index.d.ts +8 -8
  35. package/viewport/viewport-data/index.d.ts +3 -3
  36. package/viewport/viewport-data/viewport-data-matcher.d.ts +32 -32
  37. package/viewport/viewport-data/viewport-data.pipe.d.ts +18 -18
  38. package/viewport/viewport-data/viewport-data.service.d.ts +20 -20
  39. package/viewport/viewport-data/viewport-data.utils.d.ts +21 -21
  40. package/viewport/viewport-matcher-var.directive.d.ts +25 -25
  41. package/viewport/viewport-matcher.directive.d.ts +33 -33
  42. package/viewport/viewport-server-size.service.d.ts +12 -12
  43. package/viewport/viewport.const.d.ts +5 -5
  44. package/viewport/viewport.model.d.ts +57 -57
  45. package/viewport/viewport.service.d.ts +37 -37
  46. package/viewport/viewport.util.d.ts +25 -25
  47. package/CHANGELOG.md +0 -149
  48. package/bundles/ssv-ngx.ux.umd.js +0 -1219
  49. package/bundles/ssv-ngx.ux.umd.js.map +0 -1
  50. package/bundles/ssv-ngx.ux.umd.min.js +0 -16
  51. package/bundles/ssv-ngx.ux.umd.min.js.map +0 -1
  52. package/esm2015/config.js +0 -7
  53. package/esm2015/index.js +0 -5
  54. package/esm2015/internal/internal.model.js +0 -2
  55. package/esm2015/module.js +0 -50
  56. package/esm2015/platform/window.js +0 -28
  57. package/esm2015/ssv-ngx.ux.js +0 -7
  58. package/esm2015/version.js +0 -2
  59. package/esm2015/viewport/index.js +0 -9
  60. package/esm2015/viewport/viewport-data/index.js +0 -4
  61. package/esm2015/viewport/viewport-data/viewport-data-matcher.js +0 -108
  62. package/esm2015/viewport/viewport-data/viewport-data.pipe.js +0 -43
  63. package/esm2015/viewport/viewport-data/viewport-data.service.js +0 -38
  64. package/esm2015/viewport/viewport-data/viewport-data.utils.js +0 -100
  65. package/esm2015/viewport/viewport-matcher-var.directive.js +0 -64
  66. package/esm2015/viewport/viewport-matcher.directive.js +0 -134
  67. package/esm2015/viewport/viewport-server-size.service.js +0 -38
  68. package/esm2015/viewport/viewport.const.js +0 -18
  69. package/esm2015/viewport/viewport.model.js +0 -31
  70. package/esm2015/viewport/viewport.service.js +0 -69
  71. package/esm2015/viewport/viewport.util.js +0 -117
  72. package/fesm2015/ssv-ngx.ux.js +0 -807
  73. package/fesm2015/ssv-ngx.ux.js.map +0 -1
  74. package/ssv-ngx.ux.d.ts +0 -6
  75. package/ssv-ngx.ux.metadata.json +0 -1
package/esm2020/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export * from "./viewport/index";
2
- export * from "./config";
3
- export * from "./module";
4
- export * from "./version";
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3ZpZXdwb3J0L2luZGV4XCI7XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi9jb25maWdcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbW9kdWxlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3ZlcnNpb25cIjtcclxuIl19
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 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvaW50ZXJuYWwubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGljdGlvbmFyeTxUPiB7XHJcblx0W2tleTogc3RyaW5nXTogVDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRW51bURpY3Rpb25hcnk8VEtleSBleHRlbmRzIFByb3BlcnR5S2V5LCBUVmFsdWU+ID0ge1xyXG5cdFtLIGluIFRLZXldOiBUVmFsdWU7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBQYXJ0aWFsRGVlcDxUPiA9IHtcclxuXHRbUCBpbiBrZXlvZiBUXT86IFBhcnRpYWxEZWVwPFRbUF0+O1xyXG59O1xyXG4iXX0=
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvaW50ZXJuYWwubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGljdGlvbmFyeTxUPiB7XG5cdFtrZXk6IHN0cmluZ106IFQ7XG59XG5cbmV4cG9ydCB0eXBlIEVudW1EaWN0aW9uYXJ5PFRLZXkgZXh0ZW5kcyBQcm9wZXJ0eUtleSwgVFZhbHVlPiA9IHtcblx0W0sgaW4gVEtleV06IFRWYWx1ZTtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnRpYWxEZWVwPFQ+ID0ge1xuXHRbUCBpbiBrZXlvZiBUXT86IFBhcnRpYWxEZWVwPFRbUF0+O1xufTtcbiJdfQ==
@@ -1,65 +1,65 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9GLE9BQU8sRUFBYSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUUvRSxnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQVksd0JBQXdCLENBQUMsQ0FBQztBQUUxRixNQUFNLFVBQVUsR0FBRztJQUNsQiwyQkFBMkI7SUFDM0IsOEJBQThCO0lBQzlCLGdCQUFnQjtDQUNoQixDQUFDO0FBRUYsbUNBQW1DO0FBU25DLE1BQU0sT0FBTyxXQUFXO0lBRXZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBZ0U7UUFDOUUsT0FBTztZQUNOLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2FBQ2pEO1NBQ0QsQ0FBQztJQUNILENBQUM7O3dHQVRXLFdBQVc7eUdBQVgsV0FBVyxpQkFkdkIsMkJBQTJCO1FBQzNCLDhCQUE4QjtRQUM5QixnQkFBZ0IsYUFGaEIsMkJBQTJCO1FBQzNCLDhCQUE4QjtRQUM5QixnQkFBZ0I7eUdBWUosV0FBVyxhQU5aO1FBQ1YsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ3RHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFO0tBQ3hDOzJGQUdXLFdBQVc7a0JBUnZCLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMsVUFBVSxDQUFDO29CQUMxQixTQUFTLEVBQUU7d0JBQ1YsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUN0RyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRTtxQkFDeEM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQ3hCOztBQWNELGdCQUFnQjtBQUNoQixNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBcUM7SUFDekUsSUFBRyxDQUFDLE1BQU0sRUFBRTtRQUNYLE9BQU8saUJBQWlCLENBQUM7S0FDekI7SUFDRCxNQUFNLFNBQVMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkUsTUFBTSxRQUFRLEdBQUc7UUFDaEIsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRO1FBQzdCLEdBQUcsU0FBUyxDQUFDLFFBQVE7S0FDckIsQ0FBQyxDQUFDLGtDQUFrQztJQUVyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDckIsQ0FBQztBQUVELGdCQUFnQjtBQUNoQixNQUFNLFVBQVUsT0FBTztJQUN0QixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtRQUNsQyxPQUFPLE1BQU0sQ0FBQztLQUNkO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBTc3ZWaWV3cG9ydE1hdGNoZXJEaXJlY3RpdmUsIFNzdlZpZXdwb3J0TWF0Y2hlclZhckRpcmVjdGl2ZSB9IGZyb20gXCIuL3ZpZXdwb3J0L2luZGV4XCI7XHJcbmltcG9ydCB7IFV4T3B0aW9ucywgVVhfREVGQVVMVF9DT05GSUcsIFVYX0NPTkZJRyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tIFwiLi9wbGF0Zm9ybS93aW5kb3dcIjtcclxuaW1wb3J0IHsgUGFydGlhbERlZXAgfSBmcm9tIFwiLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBWaWV3cG9ydERhdGFQaXBlIH0gZnJvbSBcIi4vdmlld3BvcnQvdmlld3BvcnQtZGF0YS92aWV3cG9ydC1kYXRhLnBpcGVcIjtcclxuXHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGNvbnN0IE1PRFVMRV9DT05GSUdfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVeE9wdGlvbnM+KFwiQHNzdi9uZ3gudXgvY29uZmlnRGF0YVwiKTtcclxuXHJcbmNvbnN0IGNvbXBvbmVudHMgPSBbXHJcblx0U3N2Vmlld3BvcnRNYXRjaGVyRGlyZWN0aXZlLFxyXG5cdFNzdlZpZXdwb3J0TWF0Y2hlclZhckRpcmVjdGl2ZSxcclxuXHRWaWV3cG9ydERhdGFQaXBlLFxyXG5dO1xyXG5cclxuLy8gdG9kbzogY3JlYXRlIG1vZHVsZSBmb3IgVmlld3BvcnRcclxuQE5nTW9kdWxlKHtcclxuXHRkZWNsYXJhdGlvbnM6IFtjb21wb25lbnRzXSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdHsgcHJvdmlkZTogVVhfQ09ORklHLCB1c2VGYWN0b3J5OiBfbW9kdWxlQ29uZmlnRmFjdG9yeSwgZGVwczogW1tNT0RVTEVfQ09ORklHX0RBVEEsIG5ldyBPcHRpb25hbCgpXV0gfSxcclxuXHRcdHsgcHJvdmlkZTogV0lORE9XLCB1c2VGYWN0b3J5OiBfd2luZG93IH0sXHJcblx0XSxcclxuXHRleHBvcnRzOiBbLi4uY29tcG9uZW50c10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTc3ZVeE1vZHVsZSB7XHJcblxyXG5cdHN0YXRpYyBmb3JSb290KGNvbmZpZz86IFBhcnRpYWxEZWVwPFV4T3B0aW9ucz4gfCAoKCkgPT4gUGFydGlhbERlZXA8VXhPcHRpb25zPikpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNzdlV4TW9kdWxlPiB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRuZ01vZHVsZTogU3N2VXhNb2R1bGUsXHJcblx0XHRcdHByb3ZpZGVyczogW1xyXG5cdFx0XHRcdHsgcHJvdmlkZTogTU9EVUxFX0NPTkZJR19EQVRBLCB1c2VWYWx1ZTogY29uZmlnIH0sXHJcblx0XHRcdF0sXHJcblx0XHR9O1xyXG5cdH1cclxuXHJcbn1cclxuXHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9tb2R1bGVDb25maWdGYWN0b3J5KGNvbmZpZzogVXhPcHRpb25zIHwgKCgpID0+IFV4T3B0aW9ucykpOiBVeE9wdGlvbnMge1xyXG5cdGlmKCFjb25maWcpIHtcclxuXHRcdHJldHVybiBVWF9ERUZBVUxUX0NPTkZJRztcclxuXHR9XHJcblx0Y29uc3QgdXhPcHRpb25zID0gdHlwZW9mIGNvbmZpZyA9PT0gXCJmdW5jdGlvblwiID8gY29uZmlnKCkgOiBjb25maWc7XHJcblx0Y29uc3Qgdmlld3BvcnQgPSB7XHJcblx0XHQuLi5VWF9ERUZBVUxUX0NPTkZJRy52aWV3cG9ydCxcclxuXHRcdC4uLnV4T3B0aW9ucy52aWV3cG9ydFxyXG5cdH07IC8vIGJyZWFrcG9pbnRzIHNob3VsZG4ndCBiZSBtZXJnZWRcclxuXHJcblx0cmV0dXJuIHsgdmlld3BvcnQgfTtcclxufVxyXG5cclxuLyoqIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX3dpbmRvdygpOiB1bmtub3duIHtcclxuXHRpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG5cdFx0cmV0dXJuIHdpbmRvdztcclxuXHR9XHJcblx0cmV0dXJuIHt9O1xyXG59XHJcbiJdfQ==
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 +1,30 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsYXRmb3JtL3dpbmRvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRW5FLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBUyxRQUFRLENBQUMsQ0FBQztBQUszRCxNQUFNLE9BQU8sU0FBUztJQUVyQjtJQUNDLGlIQUFpSDtJQUN6RixNQUFXO1FBQVgsV0FBTSxHQUFOLE1BQU0sQ0FBSztJQUVwQyxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLElBQUksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLE1BQWdCLENBQUM7SUFDOUIsQ0FBQztJQUVELHNHQUFzRztJQUN0RyxJQUFJLFNBQVM7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDOztzR0FoQlcsU0FBUyxrQkFJWixNQUFNOzBHQUpILFNBQVMsY0FGVCxNQUFNOzJGQUVOLFNBQVM7a0JBSHJCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFLRSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBXSU5ET1cgPSBuZXcgSW5qZWN0aW9uVG9rZW48V2luZG93PihcIldpbmRvd1wiKTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFdpbmRvd1JlZiB7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcclxuXHRcdEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHdpbmRvdzogYW55XHJcblx0KSB7XHJcblx0fVxyXG5cclxuXHQvKiogV2luZG93IHVuZGVybHlpbmcgbmF0aXZlIG9iamVjdC4gKi9cclxuXHRnZXQgbmF0aXZlKCk6IFdpbmRvdyB7XHJcblx0XHRyZXR1cm4gdGhpcy53aW5kb3cgYXMgV2luZG93O1xyXG5cdH1cclxuXHJcblx0LyoqIERldGVybWluZXMgd2hldGhlciBuYXRpdmUgZWxlbWVudCBpcyBzdXBwb3J0ZWQgb3Igbm90LiBHZW5lcmFsbHkgYGZhbHNlYCB3aGVuIGV4ZWN1dGluZyBpbiBTU1IuICovXHJcblx0Z2V0IGhhc05hdGl2ZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAhIXRoaXMubmF0aXZlLndpbmRvdztcclxuXHR9XHJcblxyXG59XHJcbiJdfQ==
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 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3N2LW5neC51eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zc3Ytbmd4LnV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.0.0-PLACEHOLDER";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIwLjAuMC1QTEFDRUhPTERFUlwiO1xyXG4iXX0=
1
+ export const VERSION = "0.0.0-PLACEHOLDER";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIwLjAuMC1QTEFDRUhPTERFUlwiO1xuIl19
@@ -1,9 +1,9 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmlld3BvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFtQyxnQkFBZ0IsRUFBd0IsTUFBTSxrQkFBa0IsQ0FBQztBQUM1SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi92aWV3cG9ydC1kYXRhL2luZGV4XCI7XHJcblxyXG5leHBvcnQgeyBTc3ZWaWV3cG9ydE1hdGNoZXJWYXJEaXJlY3RpdmUsIFNzdlZpZXdwb3J0TWF0Y2hlclZhckNvbnRleHQgfSBmcm9tIFwiLi92aWV3cG9ydC1tYXRjaGVyLXZhci5kaXJlY3RpdmVcIjtcclxuZXhwb3J0IHsgU3N2Vmlld3BvcnRNYXRjaGVyRGlyZWN0aXZlLCBTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0IH0gZnJvbSBcIi4vdmlld3BvcnQtbWF0Y2hlci5kaXJlY3RpdmVcIjtcclxuZXhwb3J0IHsgVVhfVklFV1BPUlRfU1NSX0RFVklDRSwgVmlld3BvcnRTZXJ2ZXJTaXplU2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LXNlcnZlci1zaXplLnNlcnZpY2VcIjtcclxuZXhwb3J0IHsgQ29tcGFyaXNvbk9wZXJhdGlvbiwgRGV2aWNlVHlwZSwgVXhWaWV3cG9ydE9wdGlvbnMsIFZpZXdwb3J0U2l6ZSwgVmlld3BvcnRTaXplVHlwZSwgVmlld3BvcnRTaXplVHlwZUluZm8gfSBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xyXG5leHBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC5zZXJ2aWNlXCI7XHJcbmV4cG9ydCB7IGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZSB9IGZyb20gXCIuL3ZpZXdwb3J0LnV0aWxcIjtcclxuZXhwb3J0IHsgVVhfVklFV1BPUlRfREVGQVVMVF9CUkVBS1BPSU5UUyB9IGZyb20gXCIuL3ZpZXdwb3J0LmNvbnN0XCI7XHJcbiJdfQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmlld3BvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFtQyxnQkFBZ0IsRUFBd0IsTUFBTSxrQkFBa0IsQ0FBQztBQUM1SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi92aWV3cG9ydC1kYXRhL2luZGV4XCI7XG5cbmV4cG9ydCB7IFNzdlZpZXdwb3J0TWF0Y2hlclZhckRpcmVjdGl2ZSwgU3N2Vmlld3BvcnRNYXRjaGVyVmFyQ29udGV4dCB9IGZyb20gXCIuL3ZpZXdwb3J0LW1hdGNoZXItdmFyLmRpcmVjdGl2ZVwiO1xuZXhwb3J0IHsgU3N2Vmlld3BvcnRNYXRjaGVyRGlyZWN0aXZlLCBTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0IH0gZnJvbSBcIi4vdmlld3BvcnQtbWF0Y2hlci5kaXJlY3RpdmVcIjtcbmV4cG9ydCB7IFVYX1ZJRVdQT1JUX1NTUl9ERVZJQ0UsIFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC1zZXJ2ZXItc2l6ZS5zZXJ2aWNlXCI7XG5leHBvcnQgeyBDb21wYXJpc29uT3BlcmF0aW9uLCBEZXZpY2VUeXBlLCBVeFZpZXdwb3J0T3B0aW9ucywgVmlld3BvcnRTaXplLCBWaWV3cG9ydFNpemVUeXBlLCBWaWV3cG9ydFNpemVUeXBlSW5mbyB9IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XG5leHBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi92aWV3cG9ydC5zZXJ2aWNlXCI7XG5leHBvcnQgeyBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGUgfSBmcm9tIFwiLi92aWV3cG9ydC51dGlsXCI7XG5leHBvcnQgeyBVWF9WSUVXUE9SVF9ERUZBVUxUX0JSRUFLUE9JTlRTIH0gZnJvbSBcIi4vdmlld3BvcnQuY29uc3RcIjtcbiJdfQ==
@@ -1,4 +1,4 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmlld3BvcnQvdmlld3BvcnQtZGF0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQXNCLHlCQUF5QixFQUFvQyxNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVmlld3BvcnREYXRhU2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LWRhdGEuc2VydmljZVwiO1xyXG5leHBvcnQgeyBWaWV3cG9ydERhdGFQaXBlIH0gZnJvbSBcIi4vdmlld3BvcnQtZGF0YS5waXBlXCI7XHJcbmV4cG9ydCB7IFZpZXdwb3J0RGF0YUNvbmZpZywgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneSwgVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneUxpdGVyYWwgfSBmcm9tIFwiLi92aWV3cG9ydC1kYXRhLW1hdGNoZXJcIjtcclxuIl19
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 +1,108 @@
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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O0tBQ1o7SUFFRCxJQUFJLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO0lBQ3JDLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFFbkMsNERBQTREO0lBQzVELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3RELEtBQUssTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRTtZQUN2RixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxRQUFRLEVBQUU7Z0JBQ2IsSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDdkIsT0FBTyxJQUFJLENBQUM7aUJBQ1o7YUFDRDtTQUNEO0tBQ0Q7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi8uLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBWaWV3cG9ydFNpemVUeXBlSW5mbyB9IGZyb20gXCIuLi92aWV3cG9ydC5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IHR5cGUgVmlld3BvcnREYXRhQ29uZmlnPFRWYWx1ZSA9IHVua25vd24sIFREYXRhID0gRGljdGlvbmFyeTxUVmFsdWU+PiA9IFREYXRhICYge1xyXG5cdGRlZmF1bHQ/OiBUVmFsdWVcclxufTtcclxuXHJcbmV4cG9ydCBlbnVtIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kge1xyXG5cdC8qKiBJbmRpY2F0ZXMgdGhhdCBzaXplIHNob3VsZCBtYXRjaCBleGFjdCBvciBkZWZhdWx0LiAqL1xyXG5cdGV4YWN0LFxyXG5cclxuXHQvKiogSW5kaWNhdGVzIHRoYXQgc2l6ZSBtYXRjaGVzIHdoZW4gZXhhY3QgbWF0Y2gsIGZpcnN0IG1hdGNoIHNtYWxsZXIgKGRvd24pIG9yIGRlZmF1bHQuICovXHJcblx0c21hbGxlcixcclxuXHJcblx0LyoqIEluZGljYXRlcyB0aGF0IHNpemUgbWF0Y2hlcyB3aGVuIGV4YWN0IG1hdGNoLCBmaXJzdCBtYXRjaCBsYXJnZXIgKHVwKSBvciBkZWZhdWx0LiAqL1xyXG5cdGxhcmdlcixcclxuXHJcblx0LyoqIEluZGljYXRlcyB0aGF0IHNpemUgbWF0Y2hlcyB3aGVuIGV4YWN0IG1hdGNoLCBvciBpdCB0cmllcyBib3RoIHNtYWxsZXIvbGFyZ2VyIChzbWFsbGVyIGlzIHByZWZlcnJlZCkgdW50aWwgbWF0Y2ggb3IgZGVmYXVsdC4gKi9cclxuXHRjbG9zZXN0U21hbGxlckZpcnN0LFxyXG5cclxuXHQvKiogSW5kaWNhdGVzIHRoYXQgc2l6ZSBtYXRjaGVzIHdoZW4gZXhhY3QgbWF0Y2gsIG9yIGl0IHRyaWVzIGJvdGggbGFyZ2VyL3NtYWxsZXIgKGxhcmdlciBpcyBwcmVmZXJyZWQpIHVudGlsIG1hdGNoIG9yIGRlZmF1bHQuICovXHJcblx0Y2xvc2VzdExhcmdlckZpcnN0LFxyXG59XHJcbmV4cG9ydCB0eXBlIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3lMaXRlcmFsID0ga2V5b2YgdHlwZW9mIFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3k7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0RGF0YU1hdGNoZXI8VCA9IHVua25vd24+IHtcclxuXHQoXHJcblx0XHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXHJcblx0XHRjdXJyZW50U2l6ZVR5cGU6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxyXG5cdFx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxyXG5cdFx0c2l6ZVR5cGVNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+LFxyXG5cdCk6IFQgfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIG1hdGNoIGRhdGEgYmFzZWQgb24gc3RyYXRlZ3kgYW5kIHNpemUuXHJcbiAqXHJcbiAqIEBwYXJhbSBkYXRhQ29uZmlnIERhdGEgY29uZmlnIHRvIGdlbmVyYXRlIHJ1bGVzIGJhc2VkIG9uLlxyXG4gKiBAcGFyYW0gc2l6ZVR5cGUgU2l6ZSB0eXBlIHRvIGdldCBkYXRhIGZvci5cclxuICogQHBhcmFtIHN0cmF0ZWd5IFN0cmF0ZWd5IHRvIHVzZSB3aGVuIGJ1aWxkaW5nIHJ1bGVzLlxyXG4gKiBAcGFyYW0gc2l6ZVR5cGVzIEF2YWlsYWJsZSBzaXplIHR5cGVzIG9yZGVyZWQgYnkgaW5kZXggdHlwZS4gKENhbiBiZSBvYnRhaW5lZCBmcm9tIGBWaWV3cG9ydFNlcnZpY2VgKVxyXG4gKiBAcGFyYW0gc2l6ZVR5cGVNYXAgQXZhaWxhYmxlIHNpemUgdHlwZSBtYXAuIChDYW4gYmUgb2J0YWluZWQgZnJvbSBgVmlld3BvcnRTZXJ2aWNlYClcclxuICogQHJldHVybnMgUmV0dXJucyB0aGUgbWF0Y2hlZCBkYXRhIHZhbHVlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoVmlld3BvcnREYXRhPFQ+KFxyXG5cdGRhdGFDb25maWc6IFZpZXdwb3J0RGF0YUNvbmZpZzxUPixcclxuXHRzaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXHJcblx0c3RyYXRlZ3k6IFZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3ksXHJcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxyXG5cdHNpemVUeXBlTWFwOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPixcclxuKTogVCB8IHVuZGVmaW5lZCB7XHJcblx0Y29uc3QgbWF0Y2hGbiA9IG1hdGNoU3RyYXRlZ3lIYW5kbGVyTWFwW3N0cmF0ZWd5XTtcclxuXHRpZiAoIW1hdGNoRm4pIHtcclxuXHRcdHRocm93IEVycm9yKGBtYXRjaFZpZXdwb3J0RGF0YTogVmlld3BvcnQgRGF0YSBzdHJhdGVneSBub3QgaW1wbGVtZW50ZWQuIFN0cmF0ZWd5OiAnJHtzdHJhdGVneX0nYCk7XHJcblx0fVxyXG5cdGNvbnN0IGRhdGEgPSBtYXRjaEZuKGRhdGFDb25maWcsIHNpemVUeXBlLCBzaXplVHlwZXMsIHNpemVUeXBlTWFwKSBhcyBUO1xyXG5cdGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdHJldHVybiBkYXRhO1xyXG5cdH1cclxuXHRyZXR1cm4gZGF0YUNvbmZpZy5kZWZhdWx0O1xyXG59XHJcblxyXG5cclxuY29uc3QgbWF0Y2hTdHJhdGVneUhhbmRsZXJNYXA6IERpY3Rpb25hcnk8Vmlld3BvcnREYXRhTWF0Y2hlcj4gPSB7XHJcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuZXhhY3RdOiBtYXRjaFdpdGhFeGFjdCxcclxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5sYXJnZXJdOiBtYXRjaFdpdGhMYXJnZXJNYXRjaCxcclxuXHRbVmlld3BvcnREYXRhTWF0Y2hTdHJhdGVneS5zbWFsbGVyXTogbWF0Y2hXaXRoU21hbGxlck1hdGNoLFxyXG5cdFtWaWV3cG9ydERhdGFNYXRjaFN0cmF0ZWd5LmNsb3Nlc3RTbWFsbGVyRmlyc3RdOiBtYXRjaFdpdGhDbG9zZXN0U21hbGxlckZpcnN0TWF0Y2gsXHJcblx0W1ZpZXdwb3J0RGF0YU1hdGNoU3RyYXRlZ3kuY2xvc2VzdExhcmdlckZpcnN0XTogbWF0Y2hXaXRoQ2xvc2VzdExhcmdlckZpcnN0TWF0Y2gsXHJcbn07XHJcblxyXG5mdW5jdGlvbiBtYXRjaFdpdGhFeGFjdDxUPihcclxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXHJcblx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuKTogVCB8IHVuZGVmaW5lZCB7XHJcblx0cmV0dXJuIGRhdGFDb25maWdbY3VycmVudFNpemVUeXBlLm5hbWVdO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYXRjaFdpdGhMYXJnZXJNYXRjaDxUPihcclxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXHJcblx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXHJcbik6IFQgfCB1bmRlZmluZWQge1xyXG5cdGxldCBkYXRhID0gZGF0YUNvbmZpZ1tjdXJyZW50U2l6ZVR5cGUubmFtZV07XHJcblx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0cmV0dXJuIGRhdGE7XHJcblx0fVxyXG5cclxuXHRjb25zdCBsYXJnZXN0VHlwZUlkeCA9IHNpemVUeXBlc1tzaXplVHlwZXMubGVuZ3RoIC0gMV0udHlwZTtcclxuXHRpZiAoY3VycmVudFNpemVUeXBlLnR5cGUgPj0gbGFyZ2VzdFR5cGVJZHgpIHtcclxuXHRcdHJldHVybiB1bmRlZmluZWQ7XHJcblx0fVxyXG5cclxuXHRmb3IgKGxldCBpbmRleCA9IGN1cnJlbnRTaXplVHlwZS50eXBlOyBpbmRleCA8IHNpemVUeXBlcy5sZW5ndGg7IGluZGV4KyspIHtcclxuXHRcdGNvbnN0IHNpemVUeXBlID0gc2l6ZVR5cGVzW2luZGV4XTtcclxuXHRcdGRhdGEgPSBkYXRhQ29uZmlnW3NpemVUeXBlLm5hbWVdO1xyXG5cdFx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRyZXR1cm4gZGF0YTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hdGNoV2l0aFNtYWxsZXJNYXRjaDxUPihcclxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXHJcblx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXHJcbik6IFQgfCB1bmRlZmluZWQge1xyXG5cdGxldCBkYXRhID0gZGF0YUNvbmZpZ1tjdXJyZW50U2l6ZVR5cGUubmFtZV07XHJcblx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0cmV0dXJuIGRhdGE7XHJcblx0fVxyXG5cclxuXHRpZiAoY3VycmVudFNpemVUeXBlLnR5cGUgPD0gMCkge1xyXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcclxuXHR9XHJcblxyXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmb3ItZGlyZWN0aW9uXHJcblx0Zm9yIChsZXQgaW5kZXggPSBjdXJyZW50U2l6ZVR5cGUudHlwZTsgaW5kZXggPCBzaXplVHlwZXMubGVuZ3RoOyBpbmRleC0tKSB7XHJcblx0XHRjb25zdCBzaXplVHlwZSA9IHNpemVUeXBlc1tpbmRleF07XHJcblx0XHRkYXRhID0gZGF0YUNvbmZpZ1tzaXplVHlwZS5uYW1lXTtcclxuXHRcdGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0cmV0dXJuIGRhdGE7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gdW5kZWZpbmVkO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYXRjaFdpdGhDbG9zZXN0U21hbGxlckZpcnN0TWF0Y2g8VD4oXHJcblx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxyXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXHJcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxyXG4pOiBUIHwgdW5kZWZpbmVkIHtcclxuXHRyZXR1cm4gY2xvc2VzdE1hdGNoKGRhdGFDb25maWcsIGN1cnJlbnRTaXplVHlwZSwgc2l6ZVR5cGVzLCB0cnVlKTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWF0Y2hXaXRoQ2xvc2VzdExhcmdlckZpcnN0TWF0Y2g8VD4oXHJcblx0ZGF0YUNvbmZpZzogVmlld3BvcnREYXRhQ29uZmlnPFQ+LFxyXG5cdGN1cnJlbnRTaXplVHlwZTogVmlld3BvcnRTaXplVHlwZUluZm8sXHJcblx0c2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdLFxyXG4pOiBUIHwgdW5kZWZpbmVkIHtcclxuXHRyZXR1cm4gY2xvc2VzdE1hdGNoKGRhdGFDb25maWcsIGN1cnJlbnRTaXplVHlwZSwgc2l6ZVR5cGVzLCBmYWxzZSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNsb3Nlc3RNYXRjaDxUPihcclxuXHRkYXRhQ29uZmlnOiBWaWV3cG9ydERhdGFDb25maWc8VD4sXHJcblx0Y3VycmVudFNpemVUeXBlOiBWaWV3cG9ydFNpemVUeXBlSW5mbyxcclxuXHRzaXplVHlwZXM6IFZpZXdwb3J0U2l6ZVR5cGVJbmZvW10sXHJcblx0aXNTbWFsbGVyRmlyc3Q6IGJvb2xlYW5cclxuKTogVCB8IHVuZGVmaW5lZCB7XHJcblx0bGV0IGRhdGEgPSBkYXRhQ29uZmlnW2N1cnJlbnRTaXplVHlwZS5uYW1lXTtcclxuXHRpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRyZXR1cm4gZGF0YTtcclxuXHR9XHJcblxyXG5cdGxldCBkb3duSW5kZXggPSBjdXJyZW50U2l6ZVR5cGUudHlwZTtcclxuXHRsZXQgdXBJbmRleCA9IGN1cnJlbnRTaXplVHlwZS50eXBlO1xyXG5cclxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2ZcclxuXHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZVR5cGVzLmxlbmd0aDsgaW5kZXgrKykge1xyXG5cdFx0Zm9yIChjb25zdCBpZHggb2YgaXNTbWFsbGVyRmlyc3QgPyBbLS1kb3duSW5kZXgsICsrdXBJbmRleF0gOiBbKyt1cEluZGV4LCAtLWRvd25JbmRleF0pIHtcclxuXHRcdFx0Y29uc3Qgc2l6ZVR5cGUgPSBzaXplVHlwZXNbaWR4XTtcclxuXHRcdFx0aWYgKHNpemVUeXBlKSB7XHJcblx0XHRcdFx0ZGF0YSA9IGRhdGFDb25maWdbc2l6ZVR5cGUubmFtZV07XHJcblx0XHRcdFx0aWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gdW5kZWZpbmVkO1xyXG59XHJcbiJdfQ==
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=