@ssv/ngx.ux 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -11,6 +11,13 @@
11
11
  - **viewport:** change `ViewportSizeType` and `UX_VIEWPORT_DEFAULT_BREAKPOINTS` has been changed (see readme)
12
12
  - **viewport:** remove `ViewportService.calculateItemsPerRow` function
13
13
 
14
+ ## [1.4.1](https://github.com/sketch7/ngx.ux/compare/1.4.0...1.4.1) (2023-04-13)
15
+
16
+ ### Features
17
+
18
+ - **viewport:** `ViewportService` - add `resizeSnap$`, `sizeTypeSnap$`, `sizeSnap$` which are unthrottled
19
+ - **viewport:** `ViewportDataService` `get$` add option to `throttle`
20
+
14
21
  ## [1.4.0](https://github.com/sketch7/ngx.ux/compare/1.3.0...1.4.0) (2020-11-25)
15
22
 
16
23
  ### Features
@@ -601,15 +601,20 @@
601
601
  this._sizeTypes = generateViewportSizeTypeInfoList(config.viewport.breakpoints);
602
602
  this._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);
603
603
  if (windowRef.hasNative) {
604
- this.resize$ = rxjs.fromEvent(window, "resize").pipe(operators.map(function () { return _this.getViewportSize(); }), operators.auditTime(config.viewport.resizePollingSpeed), operators.share());
604
+ this.resizeSnap$ = rxjs.fromEvent(window, "resize").pipe(operators.map(function () { return _this.getViewportSize(); }), operators.share());
605
+ this.resize$ = this.resizeSnap$.pipe(operators.auditTime(config.viewport.resizePollingSpeed), operators.share());
605
606
  }
606
607
  else {
607
- this.resize$ = rxjs.of(viewportServerSize.get());
608
+ this.resizeSnap$ = this.resize$ = rxjs.of(viewportServerSize.get());
608
609
  }
609
610
  var size = this.getViewportSize();
610
611
  this._sizeTypeSnapshot = getSizeTypeInfo(size.width, this.sizeTypes);
611
- this.size$ = this.resize$.pipe(operators.startWith(size), operators.distinctUntilChanged(function (a, b) { return a.width === b.width && a.height === b.height; }), operators.shareReplay(1));
612
- this.sizeType$ = this.size$.pipe(operators.distinctUntilChanged(function (a, b) { return a.width === b.width; }), operators.map(function (x) { return getSizeTypeInfo(x.width, _this.sizeTypes); }), operators.distinctUntilChanged(), operators.tap(function (x) { return _this._sizeTypeSnapshot = x; }), operators.shareReplay(1));
612
+ var sizeFn = function (obs$) { return obs$.pipe(operators.startWith(size), operators.distinctUntilChanged(function (a, b) { return a.width === b.width && a.height === b.height; }), operators.shareReplay(1)); };
613
+ this.sizeSnap$ = sizeFn(this.resizeSnap$);
614
+ this.size$ = sizeFn(this.resize$);
615
+ var sizeTypeFn = function (obs$) { return obs$.pipe(operators.distinctUntilChanged(function (a, b) { return a.width === b.width; }), operators.map(function (x) { return getSizeTypeInfo(x.width, _this.sizeTypes); }), operators.distinctUntilChanged(), operators.tap(function (x) { return _this._sizeTypeSnapshot = x; }), operators.shareReplay(1)); };
616
+ this.sizeType$ = sizeTypeFn(this.size$);
617
+ this.sizeTypeSnap$ = sizeTypeFn(this.sizeSnap$);
613
618
  }
614
619
  Object.defineProperty(ViewportService.prototype, "sizeTypeSnapshot", {
615
620
  /** Viewport size type snapshot of the last value. (Prefer use `sizeType$` observable when possible.) */
@@ -793,9 +798,10 @@
793
798
  return matchViewportData(dataConfig, sizeType, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);
794
799
  };
795
800
  /** Get data for match as observable. */
796
- ViewportDataService.prototype.get$ = function (dataConfig, strategy) {
801
+ ViewportDataService.prototype.get$ = function (dataConfig, strategy, throttle) {
797
802
  var _this = this;
798
- return this.viewport.sizeType$.pipe(operators.map(function (sizeType) { return _this.get(dataConfig, strategy, sizeType); }), operators.distinctUntilChanged());
803
+ if (throttle === void 0) { throttle = true; }
804
+ return (throttle ? this.viewport.sizeType$ : this.viewport.sizeTypeSnap$).pipe(operators.map(function (sizeType) { return _this.get(dataConfig, strategy, sizeType); }), operators.distinctUntilChanged());
799
805
  };
800
806
  /** Generate rules based on strategies for data. */
801
807
  ViewportDataService.prototype.generateRules = function (dataConfig, strategy) {
@@ -1125,7 +1131,7 @@
1125
1131
  return {};
1126
1132
  }
1127
1133
 
1128
- var VERSION = "1.4.0";
1134
+ var VERSION = "1.4.1";
1129
1135
 
1130
1136
  exports.COMPARISON_OPERATION_FUNC_MAPPING = COMPARISON_OPERATION_FUNC_MAPPING;
1131
1137
  exports.MODULE_CONFIG_DATA = MODULE_CONFIG_DATA;
@@ -1 +1 @@
1
- {"version":3,"file":"ssv-ngx.ux.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","ng://@ssv/ngx.ux/viewport/viewport-data/viewport-data-matcher.ts","ng://@ssv/ngx.ux/viewport/viewport.const.ts","ng://@ssv/ngx.ux/config.ts","ng://@ssv/ngx.ux/platform/window.ts","ng://@ssv/ngx.ux/viewport/viewport.model.ts","ng://@ssv/ngx.ux/viewport/viewport-server-size.service.ts","ng://@ssv/ngx.ux/viewport/viewport.util.ts","ng://@ssv/ngx.ux/viewport/viewport.service.ts","ng://@ssv/ngx.ux/viewport/viewport-data/viewport-data.utils.ts","ng://@ssv/ngx.ux/viewport/viewport-data/viewport-data.service.ts","ng://@ssv/ngx.ux/viewport/viewport-data/viewport-data.pipe.ts","ng://@ssv/ngx.ux/viewport/viewport-matcher-var.directive.ts","ng://@ssv/ngx.ux/viewport/viewport-matcher.directive.ts","ng://@ssv/ngx.ux/module.ts","ng://@ssv/ngx.ux/version.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Dictionary } from \"../../internal/internal.model\";\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\n\nexport type ViewportDataConfig<TValue = unknown, TData = Dictionary<TValue>> = TData & {\n\tdefault?: TValue\n};\n\nexport enum ViewportDataMatchStrategy {\n\t/** Indicates that size should match exact or default. */\n\texact,\n\n\t/** Indicates that size matches when exact match, first match smaller (down) or default. */\n\tsmaller,\n\n\t/** Indicates that size matches when exact match, first match larger (up) or default. */\n\tlarger,\n\n\t/** Indicates that size matches when exact match, or it tries both smaller/larger (smaller is preferred) until match or default. */\n\tclosestSmallerFirst,\n\n\t/** Indicates that size matches when exact match, or it tries both larger/smaller (larger is preferred) until match or default. */\n\tclosestLargerFirst,\n}\nexport type ViewportDataMatchStrategyLiteral = keyof typeof ViewportDataMatchStrategy;\n\nexport interface ViewportDataMatcher<T = unknown> {\n\t(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tcurrentSizeType: ViewportSizeTypeInfo,\n\t\tsizeTypes: ViewportSizeTypeInfo[],\n\t\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n\t): T | undefined;\n}\n\n/**\n * Utility function to match data based on strategy and size.\n *\n * @param dataConfig Data config to generate rules based on.\n * @param sizeType Size type to get data for.\n * @param strategy Strategy to use when building rules.\n * @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)\n * @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)\n * @returns Returns the matched data value.\n */\nexport function matchViewportData<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tsizeType: ViewportSizeTypeInfo,\n\tstrategy: ViewportDataMatchStrategy,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n): T | undefined {\n\tconst matchFn = matchStrategyHandlerMap[strategy];\n\tif (!matchFn) {\n\t\tthrow Error(`matchViewportData: Viewport Data strategy not implemented. Strategy: '${strategy}'`);\n\t}\n\tconst data = matchFn(dataConfig, sizeType, sizeTypes, sizeTypeMap) as T;\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\treturn dataConfig.default;\n}\n\n\nconst matchStrategyHandlerMap: Dictionary<ViewportDataMatcher> = {\n\t[ViewportDataMatchStrategy.exact]: matchWithExact,\n\t[ViewportDataMatchStrategy.larger]: matchWithLargerMatch,\n\t[ViewportDataMatchStrategy.smaller]: matchWithSmallerMatch,\n\t[ViewportDataMatchStrategy.closestSmallerFirst]: matchWithClosestSmallerFirstMatch,\n\t[ViewportDataMatchStrategy.closestLargerFirst]: matchWithClosestLargerFirstMatch,\n};\n\nfunction matchWithExact<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n): T | undefined {\n\treturn dataConfig[currentSizeType.name];\n}\n\nfunction matchWithLargerMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tconst largestTypeIdx = sizeTypes[sizeTypes.length - 1].type;\n\tif (currentSizeType.type >= largestTypeIdx) {\n\t\treturn undefined;\n\t}\n\n\tfor (let index = currentSizeType.type; index < sizeTypes.length; index++) {\n\t\tconst sizeType = sizeTypes[index];\n\t\tdata = dataConfig[sizeType.name];\n\t\tif (data !== undefined) {\n\t\t\treturn data;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction matchWithSmallerMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tif (currentSizeType.type <= 0) {\n\t\treturn undefined;\n\t}\n\n\t// eslint-disable-next-line for-direction\n\tfor (let index = currentSizeType.type; index < sizeTypes.length; index--) {\n\t\tconst sizeType = sizeTypes[index];\n\t\tdata = dataConfig[sizeType.name];\n\t\tif (data !== undefined) {\n\t\t\treturn data;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction matchWithClosestSmallerFirstMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\treturn closestMatch(dataConfig, currentSizeType, sizeTypes, true);\n}\n\nfunction matchWithClosestLargerFirstMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\treturn closestMatch(dataConfig, currentSizeType, sizeTypes, false);\n}\n\nfunction closestMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tisSmallerFirst: boolean\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tlet downIndex = currentSizeType.type;\n\tlet upIndex = currentSizeType.type;\n\n\t// eslint-disable-next-line @typescript-eslint/prefer-for-of\n\tfor (let index = 0; index < sizeTypes.length; index++) {\n\t\tfor (const idx of isSmallerFirst ? [--downIndex, ++upIndex] : [++upIndex, --downIndex]) {\n\t\t\tconst sizeType = sizeTypes[idx];\n\t\t\tif (sizeType) {\n\t\t\t\tdata = dataConfig[sizeType.name];\n\t\t\t\tif (data !== undefined) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n","import { Dictionary } from \"../internal/internal.model\";\nimport { ViewportDataMatchStrategy } from \"./viewport-data/viewport-data-matcher\";\nimport { UxViewportOptions } from \"./viewport.model\";\n\n/** Default viewport breakpoints. */\nexport const UX_VIEWPORT_DEFAULT_BREAKPOINTS: Dictionary<number> = {\n\txsmall: 450,\n\tsmall: 767,\n\tmedium: 992,\n\tlarge: 1200,\n\txlarge: 1500,\n\txxlarge: 1920,\n\txxlarge1: 2100,\n};\n\nexport const UX_VIEWPORT_DEFAULT_CONFIG: UxViewportOptions = {\n\tresizePollingSpeed: 33,\n\tbreakpoints: UX_VIEWPORT_DEFAULT_BREAKPOINTS,\n\tdefaultDataMatchStrategy: ViewportDataMatchStrategy.smaller,\n};\n","import { InjectionToken } from \"@angular/core\";\nimport { UX_VIEWPORT_DEFAULT_CONFIG } from \"./viewport/viewport.const\";\nimport { UxViewportOptions } from \"./viewport/viewport.model\";\n\nexport interface UxOptions {\n\tviewport: UxViewportOptions;\n}\n\nexport const UX_DEFAULT_CONFIG: UxOptions = {\n\tviewport: UX_VIEWPORT_DEFAULT_CONFIG,\n};\n\nexport const UX_CONFIG = new InjectionToken<UxOptions>(\"@ssv/ngx.ux-config\");\n","import { InjectionToken, Injectable, Inject } from \"@angular/core\";\n\nexport const WINDOW = new InjectionToken<Window>(\"Window\");\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class WindowRef {\n\n\tconstructor(\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\t\t@Inject(WINDOW) private window: any\n\t) {\n\t}\n\n\t/** Window underlying native object. */\n\tget native(): Window {\n\t\treturn this.window as Window;\n\t}\n\n\t/** Determines whether native element is supported or not. Generally `false` when executing in SSR. */\n\tget hasNative(): boolean {\n\t\treturn !!this.native.window;\n\t}\n\n}\n","import { Dictionary } from \"../internal/internal.model\";\nimport { ViewportDataMatchStrategy } from \"./viewport-data\";\n\n/**\n * The indices of each breakpoint provided based on the `UX_VIEWPORT_DEFAULT_BREAKPOINTS`.\n * @see UX_VIEWPORT_DEFAULT_BREAKPOINTS\n */\nexport enum ViewportSizeType {\n\txsmall = 0,\n\tsmall = 1,\n\tmedium = 2,\n\tlarge = 3,\n\txlarge = 4,\n\txxlarge = 5,\n\txxlarge1 = 6,\n}\n\nexport enum ComparisonOperation {\n\tequals = \"=\",\n\tnotEquals = \"<>\",\n\tlessThan = \"<\",\n\tlessOrEqualThan = \"<=\",\n\tgreaterThan = \">\",\n\tgreaterOrEqualThan = \">=\",\n}\n\nexport enum DeviceType {\n\tdesktop = \"desktop\",\n\tmobile = \"mobile\",\n\ttablet = \"tablet\"\n}\n\nexport interface UxViewportOptions {\n\t/** Polling speed on resizing (in milliseconds). e.g. the higher the number the longer it takes to recalculate. */\n\tresizePollingSpeed: number;\n\n\t/** Breakpoints to use. Key needs to match the size type and the value the width threshold.\n\t * e.g. given width '1000' and `medium` is set to '992' => `large`.\n\t */\n\tbreakpoints: Dictionary<number>;\n\n\t/** Default data match strategy to use. */\n\tdefaultDataMatchStrategy: ViewportDataMatchStrategy;\n}\n\nexport interface ViewportSize {\n\twidth: number;\n\theight: number;\n}\n\nexport interface ViewportSizeTypeInfo {\n\ttype: number;\n\tname: string;\n\twidthThreshold: number;\n}\n\nexport interface ViewportMatchConditions {\n\tsizeType?: string | string[] | null;\n\tsizeTypeExclude?: string | string[] | null;\n\texpression?: ViewportSizeMatcherExpression;\n}\n\nexport interface ViewportSizeMatcherExpression {\n\tsize: string;\n\toperation: ComparisonOperation;\n}\n","import { Injectable, Inject, InjectionToken, Optional } from \"@angular/core\";\n\nimport { Dictionary } from \"../internal/internal.model\";\nimport { DeviceType, ViewportSize } from \"./viewport.model\";\nimport { UxOptions } from \"../config\";\n\n// todo: make this configurable\n/** Viewport size for SSR. */\nconst viewportSizeSSR: Dictionary<ViewportSize> = {\n\t[DeviceType.desktop]: {\n\t\twidth: 1366,\n\t\theight: 768,\n\t},\n\t[DeviceType.tablet]: {\n\t\twidth: 768,\n\t\theight: 1024,\n\t},\n\t[DeviceType.mobile]: {\n\t\twidth: 414,\n\t\theight: 736,\n\t},\n};\n\nexport const UX_VIEWPORT_SSR_DEVICE = new InjectionToken<UxOptions>(\"@ssv/ngx.ux-config/viewport/ssr-device\");\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportServerSizeService {\n\n\tconstructor(\n\t\t@Optional() @Inject(UX_VIEWPORT_SSR_DEVICE) private deviceType: DeviceType,\n\t) {\n\t}\n\n\tget(): ViewportSize {\n\t\treturn viewportSizeSSR[this.deviceType] || viewportSizeSSR[DeviceType.desktop];\n\t}\n\n}\n","import { Dictionary } from \"../internal/internal.model\";\nimport {\n\tComparisonOperation,\n\tViewportSizeMatcherExpression,\n\tViewportSizeTypeInfo,\n\tViewportMatchConditions\n} from \"./viewport.model\";\n\nexport function isViewportSizeMatcherExpression(value: unknown): value is ViewportSizeMatcherExpression {\n\tif (typeof value !== \"object\" || !value) {\n\t\treturn false;\n\t}\n\tconst args: Partial<ViewportSizeMatcherExpression> = value;\n\tif (args.size && args.operation) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function isViewportSizeMatcherTupleExpression(arg: unknown): arg is [ComparisonOperation, string] {\n\tif (!arg) {\n\t\treturn false;\n\t}\n\tif (Array.isArray(arg)) {\n\t\tif (arg.length === 2) {\n\t\t\tconst [op] = arg;\n\t\t\treturn operations.includes(op);\n\t\t}\n\t}\n\treturn false;\n}\n\n\nconst operations = Object.values(ComparisonOperation);\n\nexport const COMPARISON_OPERATION_FUNC_MAPPING: Dictionary<(a: number, b: number) => boolean> = {\n\t[ComparisonOperation.equals]: (a: number, b: number) => a === b,\n\t[ComparisonOperation.notEquals]: (a: number, b: number) => a !== b,\n\t[ComparisonOperation.lessThan]: (a: number, b: number) => a < b,\n\t[ComparisonOperation.lessOrEqualThan]: (a: number, b: number) => a <= b,\n\t[ComparisonOperation.greaterThan]: (a: number, b: number) => a > b,\n\t[ComparisonOperation.greaterOrEqualThan]: (a: number, b: number) => a >= b,\n};\n\nexport function isViewportConditionMatch(\n\tevaluateSize: ViewportSizeTypeInfo,\n\tconditions: ViewportMatchConditions,\n\tviewportSizeTypeInfoRefs: Dictionary<ViewportSizeTypeInfo>\n): boolean {\n\tconst isExcluded = match(conditions.sizeTypeExclude, evaluateSize.name, false);\n\tlet isIncluded;\n\tlet isExpressionTruthy;\n\n\tif (!isExcluded && conditions.expression) {\n\t\tconst ref = viewportSizeTypeInfoRefs[conditions.expression.size];\n\t\tif(!ref) {\n\t\t\tthrow new Error(`Viewport size type is invalid. Size type: '${conditions.expression.size}'`);\n\t\t}\n\t\tconst expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expression.operation];\n\n\t\tisExpressionTruthy = expMatcher(evaluateSize.type, ref.type);\n\t} else {\n\t\tisIncluded = match(conditions.sizeType, evaluateSize.name, true);\n\t}\n\n\tconst shouldRender = (isExpressionTruthy || isIncluded) && !isExcluded;\n\t// console.warn(\">>> shouldRender\", { evaluateSize, conditions, shouldRender });\n\treturn !!shouldRender;\n}\n\nfunction match(value: string | string[] | null | undefined, targetValue: string, defaultValue: boolean) {\n\tif (!value) {\n\t\treturn defaultValue;\n\t}\n\n\treturn Array.isArray(value)\n\t\t? value.includes(targetValue)\n\t\t: value === targetValue;\n}\n\nexport function getSizeTypeInfo(width: number, sizeTypes: ViewportSizeTypeInfo[]): ViewportSizeTypeInfo {\n\tconst lastEntryIndex = sizeTypes.length - 1;\n\n\tfor (let idx = 0; idx < lastEntryIndex; idx++) {\n\t\tconst viewportSizeTypeInfo = sizeTypes[idx];\n\n\t\tif (width <= viewportSizeTypeInfo.widthThreshold) {\n\t\t\treturn viewportSizeTypeInfo;\n\t\t}\n\t}\n\n\treturn sizeTypes[lastEntryIndex];\n}\n\n/**\n * Converts the breakpoints into a 2 dimensional array containing the name and width, and sorted from\n * smallest to largest.\n * @param breakpoints the breakpoints obtained from the config\n * @internal\n */\nfunction getSortedBreakpoints(breakpoints: Dictionary<number>): [string, number][] {\n\treturn Object.entries(breakpoints)\n\t\t.sort(([, widthA], [, widthB]) => widthA - widthB);\n}\n\n/**\n * A util function which generates the ViewportSizeTypeInfo.type for each breakpoint.\n * @param breakpoints the custom breakpoints\n */\nexport function generateViewportSizeType<T extends Record<string, number>>(breakpoints: T): T & Record<number, string> {\n\treturn Object.freeze(\n\t\tgetSortedBreakpoints(breakpoints).reduce<Record<number | string, string | number>>(\n\t\t\t(dictionary, [name], index) => {\n\t\t\t\tdictionary[name] = index;\n\t\t\t\tdictionary[index] = name;\n\t\t\t\treturn dictionary;\n\t\t\t}, {}\n\t\t)\n\t) as T & Record<number, string>;\n}\n\n/**\n * Pre-processes the given breakpoints into an ordered list from smallest to largest while generating\n * all the necessary information on the viewport.\n * @param breakpoints the breakpoints obtained from the config\n * @internal\n */\nexport function generateViewportSizeTypeInfoList(breakpoints: Dictionary<number>): ViewportSizeTypeInfo[] {\n\treturn getSortedBreakpoints(breakpoints)\n\t\t.map(([name, width], index) =>\n\t\t\t(Object.freeze({\n\t\t\t\tname,\n\t\t\t\ttype: index,\n\t\t\t\twidthThreshold: width\n\t\t\t}))\n\t\t);\n}\n\n/**\n * Converts the breakpoint list into a dictionary while using the name as key.\n * @param breakpointList the list of breakpoints\n * @internal\n */\nexport function generateViewportSizeTypeInfoRefs(breakpointList: ViewportSizeTypeInfo[]): Dictionary<ViewportSizeTypeInfo> {\n\treturn Object.freeze(\n\t\tbreakpointList.reduce<Dictionary<ViewportSizeTypeInfo>>((dictionary, breakpoint) => {\n\t\t\tdictionary[breakpoint.name] = breakpoint;\n\t\t\tdictionary[breakpoint.type] = breakpoint;\n\t\t\treturn dictionary;\n\t\t}, {})\n\t);\n}\n","import { Injectable, Inject } from \"@angular/core\";\nimport { Observable, fromEvent, of } from \"rxjs\";\nimport {\n\tmap,\n\ttap,\n\tdistinctUntilChanged,\n\tstartWith,\n\tshare,\n\tshareReplay,\n\tauditTime,\n} from \"rxjs/operators\";\n\nimport { UxOptions, UX_CONFIG } from \"../config\";\nimport { ViewportSizeTypeInfo, ViewportSize } from \"./viewport.model\";\nimport { WindowRef } from \"../platform/window\";\nimport { ViewportServerSizeService } from \"./viewport-server-size.service\";\nimport { generateViewportSizeTypeInfoList, generateViewportSizeTypeInfoRefs, getSizeTypeInfo } from \"./viewport.util\";\nimport { Dictionary } from \"../internal/internal.model\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportService {\n\n\t/** Window resize observable (which is also throttled). */\n\treadonly resize$: Observable<ViewportSize>;\n\n\t/** Viewport size type observable. */\n\treadonly sizeType$: Observable<ViewportSizeTypeInfo>;\n\n\t/** Viewport size type snapshot of the last value. (Prefer use `sizeType$` observable when possible.) */\n\tget sizeTypeSnapshot(): ViewportSizeTypeInfo { return this._sizeTypeSnapshot; }\n\n\t/** Viewport size observable. */\n\treadonly size$: Observable<ViewportSize>;\n\n\t/** Size types refs of the generated viewport size type info. */\n\tget sizeTypeMap(): Dictionary<ViewportSizeTypeInfo> { return this._sizeTypeMap; }\n\n\t/** Viewport size types list ordered by type, smallest to largest. */\n\tget sizeTypes(): ViewportSizeTypeInfo[] { return this._sizeTypes; }\n\n\tprivate _sizeTypeMap: Dictionary<ViewportSizeTypeInfo>;\n\tprivate _sizeTypes: ViewportSizeTypeInfo[];\n\tprivate _sizeTypeSnapshot: ViewportSizeTypeInfo;\n\n\tconstructor(\n\t\tprivate windowRef: WindowRef,\n\t\tprivate viewportServerSize: ViewportServerSizeService,\n\t\t@Inject(UX_CONFIG) config: UxOptions,\n\t) {\n\t\tthis._sizeTypes = generateViewportSizeTypeInfoList(config.viewport.breakpoints);\n\t\tthis._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);\n\n\t\tif (windowRef.hasNative) {\n\t\t\tthis.resize$ = fromEvent<Event>(window, \"resize\").pipe(\n\t\t\t\tmap(() => this.getViewportSize()),\n\t\t\t\tauditTime(config.viewport.resizePollingSpeed),\n\t\t\t\tshare(),\n\t\t\t);\n\t\t} else {\n\t\t\tthis.resize$ = of(viewportServerSize.get());\n\t\t}\n\t\tconst size = this.getViewportSize();\n\t\tthis._sizeTypeSnapshot = getSizeTypeInfo(size.width, this.sizeTypes);\n\n\t\tthis.size$ = this.resize$.pipe(\n\t\t\tstartWith(size),\n\t\t\tdistinctUntilChanged((a, b) => a.width === b.width && a.height === b.height),\n\t\t\tshareReplay(1),\n\t\t);\n\n\t\tthis.sizeType$ = this.size$.pipe(\n\t\t\tdistinctUntilChanged((a, b) => a.width === b.width),\n\t\t\tmap(x => getSizeTypeInfo(x.width, this.sizeTypes)),\n\t\t\tdistinctUntilChanged(),\n\t\t\ttap(x => this._sizeTypeSnapshot = x),\n\t\t\tshareReplay(1),\n\t\t);\n\t}\n\n\t/**\n\t * Calculates amount of items that fits into container's width.\n\t * @param containerWidth\n\t * @param itemWidth\n\t * @returns\n\t */\n\tcalculateItemsPerRow(containerWidth: number, itemWidth: number): number {\n\t\tif (containerWidth === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (!containerWidth && !this.windowRef.hasNative) {\n\t\t\t// todo: find a way to get container width for ssr\n\t\t\tcontainerWidth = this.viewportServerSize.get().width;\n\t\t}\n\n\t\treturn containerWidth / itemWidth;\n\t}\n\n\t/** Returns the current viewport size */\n\tprivate getViewportSize(): ViewportSize {\n\t\tif (!this.windowRef.hasNative) {\n\t\t\treturn this.viewportServerSize.get();\n\t\t}\n\n\t\tconst ua = navigator.userAgent.toLowerCase();\n\t\tif (ua.indexOf(\"safari\") !== -1 && ua.indexOf(\"chrome\") === -1) { // safari subtracts the scrollbar width\n\t\t\treturn {\n\t\t\t\twidth: this.windowRef.native.document.documentElement.clientWidth,\n\t\t\t\theight: this.windowRef.native.document.documentElement.clientHeight,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\twidth: this.windowRef.native.innerWidth,\n\t\t\theight: this.windowRef.native.innerHeight,\n\t\t};\n\t}\n\n}\n","import { Dictionary } from \"../../internal/internal.model\";\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\nimport { ViewportDataConfig, ViewportDataMatchStrategy } from \"./viewport-data-matcher\";\n\nexport interface ViewportDataRule<T> {\n\tmin?: number;\n\tmax?: number;\n\tvalue: T;\n}\n\n/**\n * Utility function to generate rules based on strategies.\n *\n * @param dataConfig Data config to generate rules based on.\n * @param strategy Strategy to use when building rules.\n * @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)\n * @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)\n * @returns Returns a collection of rules (ordered).\n */\nexport function generateViewportRulesRangeFromDataMatcher<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tstrategy: ViewportDataMatchStrategy,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n): ViewportDataRule<T>[] {\n\tconst ruleBuilderFn = matchStrategyHandlerMap[strategy];\n\tif (!ruleBuilderFn) {\n\t\tthrow Error(`generateViewportRulesRangeFromDataMatcher: Viewport Data strategy not implemented. Strategy: '${strategy}'`);\n\t}\n\n\tlet dataSizes: ViewportSizeTypeInfo[] = [];\n\tfor (const key in dataConfig) {\n\t\tif (Object.prototype.hasOwnProperty.call(dataConfig, key)) {\n\t\t\tconst data = dataConfig[key];\n\t\t\tif (data === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst size = sizeTypeMap[key];\n\t\t\tif (size) {\n\t\t\t\tdataSizes.push(size);\n\t\t\t}\n\t\t}\n\t}\n\tdataSizes = dataSizes.sort(({ type: typeA }, { type: typeB }) => typeA - typeB);\n\n\tconst rules: ViewportDataRule<T>[] = [];\n\tif (dataConfig.default) {\n\t\trules.push({ value: dataConfig.default, min: undefined, max: undefined });\n\t}\n\n\tlet prevRule: ViewportDataRule<T> | undefined;\n\tfor (let index = 0; index < dataSizes.length; index++) {\n\t\tconst prevDataSize = dataSizes[index - 1];\n\t\tconst nextDataSize = dataSizes[index + 1];\n\t\tconst dataSize = dataSizes[index];\n\t\tconst prevSize = sizeTypes[dataSize.type - 1];\n\t\t// const nextSize = sizeTypes[dataSize.type + 1];\n\t\tconst data = dataConfig[dataSize.name];\n\t\tconst rule: ViewportDataRule<T> = {\n\t\t\tvalue: data,\n\t\t\tmin: undefined,\n\t\t\tmax: undefined,\n\t\t};\n\n\t\truleBuilderFn(rule, dataSize, nextDataSize, prevDataSize, prevSize, prevRule, sizeTypes);\n\n\t\tprevRule = rule;\n\t\trules.push(rule);\n\t}\n\treturn rules;\n}\n\nexport interface ViewportRuleRangeBuilder<T = unknown> {\n\t(\n\t\trule: ViewportDataRule<T>,\n\t\tdataSize: ViewportSizeTypeInfo,\n\t\tnextDataSize: ViewportSizeTypeInfo | undefined,\n\t\tprevDataSize: ViewportSizeTypeInfo | undefined,\n\t\tprevSize: ViewportSizeTypeInfo | undefined,\n\t\tprevRule: ViewportDataRule<T> | undefined,\n\t\tsizeTypes: ViewportSizeTypeInfo[],\n\t): void;\n}\n\nconst matchStrategyHandlerMap: Dictionary<ViewportRuleRangeBuilder> = {\n\t[ViewportDataMatchStrategy.exact]: (rule, dataSize, _nextDataSize, _prevDataSize, prevSize) => {\n\t\trule.max = dataSize.widthThreshold;\n\t\tif (prevSize) {\n\t\t\trule.min = prevSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.smaller]: (rule, dataSize, nextDataSize, _prevDataSize, prevSize) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = dataSize.widthThreshold;\n\t\t}\n\t\tif (prevSize) {\n\t\t\trule.min = prevSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.larger]: (rule, dataSize, _nextDataSize, prevDataSize) => {\n\t\tif (dataSize) {\n\t\t\trule.max = dataSize.widthThreshold;\n\t\t}\n\t\tif (prevDataSize) {\n\t\t\trule.min = prevDataSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.closestSmallerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, true);\n\t\t}\n\t\tif (prevRule?.max) {\n\t\t\trule.min = prevRule.max + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.closestLargerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, false);\n\t\t}\n\t\tif (prevRule?.max) {\n\t\t\trule.min = prevRule.max + 1;\n\t\t}\n\t},\n};\n\nfunction calculateClosestWidthThreshold(\n\tnextDataSize: ViewportSizeTypeInfo,\n\tdataSize: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tisSmallerPreferred: boolean,\n) {\n\tconst fn = isSmallerPreferred ? Math.ceil : Math.floor;\n\t// get closest between curr and next\n\tconst diffIndex = fn((nextDataSize.type - dataSize.type - 1) / 2);\n\tconst diffNextSize = sizeTypes[dataSize.type + diffIndex];\n\treturn (diffNextSize || dataSize).widthThreshold;\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { distinctUntilChanged, map } from \"rxjs/operators\";\nimport { UX_CONFIG, UxOptions } from \"../../config\";\n\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\nimport { ViewportService } from \"../viewport.service\";\nimport { matchViewportData, ViewportDataConfig, ViewportDataMatchStrategy } from \"./viewport-data-matcher\";\nimport { generateViewportRulesRangeFromDataMatcher, ViewportDataRule } from \"./viewport-data.utils\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportDataService {\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\t@Inject(UX_CONFIG) private config: UxOptions,\n\t) {\n\t}\n\n\t/** Get data for match. */\n\tget<T>(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tstrategy: ViewportDataMatchStrategy = this.config.viewport.defaultDataMatchStrategy,\n\t\tsizeType: ViewportSizeTypeInfo = this.viewport.sizeTypeSnapshot\n\t): T | undefined {\n\t\treturn matchViewportData(dataConfig, sizeType, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);\n\t}\n\n\t/** Get data for match as observable. */\n\tget$<T>(dataConfig: ViewportDataConfig<T>, strategy?: ViewportDataMatchStrategy): Observable<T | undefined> {\n\t\treturn this.viewport.sizeType$.pipe(\n\t\t\tmap(sizeType => this.get<T>(dataConfig, strategy, sizeType)),\n\t\t\tdistinctUntilChanged(),\n\t\t);\n\t}\n\n\t/** Generate rules based on strategies for data. */\n\tgenerateRules<T>(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tstrategy: ViewportDataMatchStrategy = this.config.viewport.defaultDataMatchStrategy,\n\t): ViewportDataRule<T>[] {\n\t\treturn generateViewportRulesRangeFromDataMatcher(\n\t\t\tdataConfig,\n\t\t\tstrategy,\n\t\t\tthis.viewport.sizeTypes,\n\t\t\tthis.viewport.sizeTypeMap\n\t\t);\n\t}\n\n}\n","import { Subscription } from \"rxjs\";\nimport { tap } from \"rxjs/operators\";\nimport { Pipe, PipeTransform, OnDestroy, ChangeDetectorRef } from \"@angular/core\";\n\nimport { ViewportDataConfig, ViewportDataMatchStrategy, ViewportDataMatchStrategyLiteral } from \"./viewport-data-matcher\";\nimport { ViewportDataService } from \"./viewport-data.service\";\n\n/* eslint-disable @angular-eslint/no-pipe-impure */\n@Pipe({\n\tname: \"ssvViewportData\",\n\tpure: false\n})\nexport class ViewportDataPipe implements PipeTransform, OnDestroy {\n\n\tprivate markForTransform = true;\n\tprivate value: unknown;\n\tprivate data: ViewportDataConfig | undefined;\n\tprivate strategy: ViewportDataMatchStrategyLiteral | undefined;\n\tprivate data$$ = Subscription.EMPTY;\n\n\tconstructor(\n\t\tprivate viewportData: ViewportDataService,\n\t\tprivate cdr: ChangeDetectorRef\n\t) {\n\t}\n\n\ttransform(data: ViewportDataConfig, strategy: ViewportDataMatchStrategyLiteral): unknown {\n\t\tif (!this.markForTransform && data === this.data && strategy === this.strategy) {\n\t\t\treturn this.value;\n\t\t}\n\t\tthis.data = data;\n\t\tthis.strategy = strategy;\n\n\t\tthis.data$$.unsubscribe();\n\t\tthis.data$$ = this.viewportData.get$(data, ViewportDataMatchStrategy[strategy]).pipe(\n\t\t\ttap(value => {\n\t\t\t\tthis.markForTransform = true;\n\t\t\t\tthis.value = value;\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t).subscribe();\n\n\t\tthis.markForTransform = false;\n\t\treturn this.value;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.data$$.unsubscribe();\n\t}\n\n}\n","import {\n\tOnInit,\n\tOnDestroy,\n\tDirective,\n\tInput,\n\tTemplateRef,\n\tViewContainerRef,\n\tEmbeddedViewRef,\n} from \"@angular/core\";\nimport { combineLatest, ReplaySubject, Subject } from \"rxjs\";\nimport { tap, map, takeUntil } from \"rxjs/operators\";\n\nimport { ViewportService } from \"./viewport.service\";\nimport {\n\tisViewportSizeMatcherExpression,\n\tisViewportSizeMatcherTupleExpression,\n\tisViewportConditionMatch\n} from \"./viewport.util\";\nimport { ViewportMatchConditions, ViewportSizeMatcherExpression } from \"./viewport.model\";\n\nconst NAME_CAMEL = \"ssvViewportMatcherVar\";\n\nexport class SsvViewportMatcherVarContext {\n\n\tconstructor(\n\t\tpublic $implicit = false,\n\t) { }\n\n}\n\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n})\nexport class SsvViewportMatcherVarDirective implements OnInit, OnDestroy {\n\n\tprivate _matchConditions: ViewportMatchConditions = {};\n\tprivate _context = new SsvViewportMatcherVarContext();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _update$ = new ReplaySubject<void>(1);\n\tprivate _viewRef!: EmbeddedViewRef<SsvViewportMatcherVarContext>;\n\n\t@Input(`${NAME_CAMEL}When`) set condition(value: string | string[] | ViewportSizeMatcherExpression) {\n\t\tif (isViewportSizeMatcherExpression(value)) {\n\t\t\tthis._matchConditions.expression = value;\n\t\t} else if (isViewportSizeMatcherTupleExpression(value)) {\n\t\t\tconst [op, size] = value;\n\t\t\tthis._matchConditions.expression = {\n\t\t\t\toperation: op,\n\t\t\t\tsize\n\t\t\t};\n\t\t} else {\n\t\t\tthis._matchConditions.sizeType = value;\n\t\t}\n\n\t\tthis._update$.next();\n\t}\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\tprivate viewContainer: ViewContainerRef,\n\t\tprivate templateRef: TemplateRef<SsvViewportMatcherVarContext>,\n\t) {\n\t}\n\n\tngOnInit(): void {\n\t\tthis.updateView();\n\t\tcombineLatest([this.viewport.sizeType$, this._update$]).pipe(\n\t\t\tmap(([sizeType]) => isViewportConditionMatch(sizeType, this._matchConditions, this.viewport.sizeTypeMap)),\n\t\t\ttap(x => this._context.$implicit = x),\n\t\t\ttap(() => this._viewRef.markForCheck()),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tprivate updateView(): void {\n\t\tthis.viewContainer.clear();\n\t\tthis._viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this._context);\n\t}\n\n}\n","import {\n\tOnInit,\n\tOnDestroy,\n\tDirective,\n\tRenderer2,\n\tViewContainerRef,\n\tInput,\n\tEmbeddedViewRef,\n\tTemplateRef,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subscription, Subject } from \"rxjs\";\nimport { tap, filter, pairwise, startWith } from \"rxjs/operators\";\n\nimport { ViewportService } from \"./viewport.service\";\nimport {\n\tisViewportSizeMatcherExpression,\n\tisViewportSizeMatcherTupleExpression,\n\tisViewportConditionMatch\n} from \"./viewport.util\";\nimport { ViewportSizeTypeInfo, ViewportMatchConditions, ViewportSizeMatcherExpression } from \"./viewport.model\";\n\nexport class SsvViewportMatcherContext implements ViewportMatchConditions {\n\n\tsizeType: string | string[] | null = null;\n\tsizeTypeExclude: string | string[] | null = null;\n\texpression?: ViewportSizeMatcherExpression;\n\n}\n\n@Directive({\n\tselector: \"[ssvViewportMatcher]\",\n\texportAs: \"ssvViewportMatcher\",\n})\nexport class SsvViewportMatcherDirective implements OnInit, OnDestroy {\n\n\tsizeInfo: ViewportSizeTypeInfo | undefined;\n\n\tprivate _context: SsvViewportMatcherContext = new SsvViewportMatcherContext();\n\tprivate _thenTemplateRef: TemplateRef<SsvViewportMatcherContext> | null = null;\n\tprivate _elseTemplateRef: TemplateRef<SsvViewportMatcherContext> | null = null;\n\tprivate _thenViewRef: EmbeddedViewRef<SsvViewportMatcherContext> | null = null;\n\tprivate _elseViewRef: EmbeddedViewRef<SsvViewportMatcherContext> | null = null;\n\tprivate sizeType$$ = Subscription.EMPTY;\n\tprivate cssClass$$ = Subscription.EMPTY;\n\tprivate readonly _update$ = new Subject<SsvViewportMatcherContext>();\n\n\t@Input() set ssvViewportMatcher(value: string | string[] | ViewportSizeMatcherExpression) {\n\t\tif (isViewportSizeMatcherExpression(value)) {\n\t\t\tthis._context.expression = value;\n\t\t} else if (isViewportSizeMatcherTupleExpression(value)) {\n\t\t\tconst [op, size] = value;\n\t\t\tthis._context.expression = {\n\t\t\t\toperation: op,\n\t\t\t\tsize\n\t\t\t};\n\t\t} else {\n\t\t\tthis._context.sizeType = value;\n\t\t}\n\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\t@Input() set ssvViewportMatcherExclude(value: string | string[]) {\n\t\tthis._context.sizeTypeExclude = value;\n\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\t@Input() set ssvViewportMatcherElse(templateRef: TemplateRef<SsvViewportMatcherContext> | null) {\n\t\tthis._elseTemplateRef = templateRef;\n\t\tthis._elseViewRef = null; // clear previous view if any.\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\tprivate renderer: Renderer2,\n\t\tprivate viewContainer: ViewContainerRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t\ttemplateRef: TemplateRef<SsvViewportMatcherContext>,\n\t) {\n\t\tthis._thenTemplateRef = templateRef;\n\t}\n\n\tngOnInit(): void {\n\t\t// console.log(\"ssvViewportMatcher init\");\n\n\t\tthis._update$\n\t\t\t.pipe(\n\t\t\t\t// tap(x => console.log(\">>> ssvViewportMatcher - update triggered\", x)),\n\t\t\t\tfilter(() => !!this.sizeInfo),\n\t\t\t\t// tap(x => console.log(\">>> ssvViewportMatcher - updating...\", x)),\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\ttap(() => this._updateView(this.sizeInfo!)),\n\t\t\t\ttap(() => this.cdr.markForCheck())\n\t\t\t)\n\t\t\t.subscribe();\n\n\t\tthis.sizeType$$ = this.viewport.sizeType$\n\t\t\t.pipe(\n\t\t\t\t// tap(x => console.log(\"ssvViewportMatcher - sizeType changed\", x)),\n\t\t\t\ttap(x => this.sizeInfo = x),\n\t\t\t\ttap(() => this._update$.next(this._context)),\n\t\t\t)\n\t\t\t.subscribe();\n\n\t\tthis.cssClass$$ = this.viewport.sizeType$\n\t\t\t.pipe(\n\t\t\t\tstartWith<ViewportSizeTypeInfo | undefined>(undefined),\n\t\t\t\tfilter(() => !!(this._thenViewRef || this._elseViewRef)),\n\t\t\t\tpairwise(),\n\t\t\t\ttap(([prev, curr]) => {\n\t\t\t\t\tconst el: Element = this._thenViewRef\n\t\t\t\t\t\t? this._thenViewRef.rootNodes[0]\n\t\t\t\t\t\t: this._elseViewRef?.rootNodes[0];\n\n\t\t\t\t\tif (!el.classList) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (prev) {\n\t\t\t\t\t\tthis.renderer.removeClass(el, `ssv-vp-size--${prev.name}`);\n\t\t\t\t\t}\n\t\t\t\t\tthis.renderer.addClass(el, `ssv-vp-size--${curr?.name}`);\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.cssClass$$.unsubscribe();\n\t\tthis.sizeType$$.unsubscribe();\n\t\tthis._update$.complete();\n\t}\n\n\tprivate _updateView(sizeInfo: ViewportSizeTypeInfo) {\n\t\tif (isViewportConditionMatch(sizeInfo, this._context, this.viewport.sizeTypeMap)) {\n\t\t\tif (!this._thenViewRef) {\n\t\t\t\tthis.viewContainer.clear();\n\t\t\t\tthis._elseViewRef = null;\n\n\t\t\t\tif (this._thenTemplateRef) {\n\t\t\t\t\tthis._thenViewRef = this.viewContainer.createEmbeddedView(\n\t\t\t\t\t\tthis._thenTemplateRef,\n\t\t\t\t\t\tthis._context,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this._elseViewRef) {\n\t\t\t\tthis.viewContainer.clear();\n\t\t\t\tthis._thenViewRef = null;\n\n\t\t\t\tif (this._elseTemplateRef) {\n\t\t\t\t\tthis._elseViewRef = this.viewContainer.createEmbeddedView(\n\t\t\t\t\t\tthis._elseTemplateRef,\n\t\t\t\t\t\tthis._context,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n","import { NgModule, ModuleWithProviders, InjectionToken, Optional } from \"@angular/core\";\n\nimport { SsvViewportMatcherDirective, SsvViewportMatcherVarDirective } from \"./viewport/index\";\nimport { UxOptions, UX_DEFAULT_CONFIG, UX_CONFIG } from \"./config\";\nimport { WINDOW } from \"./platform/window\";\nimport { PartialDeep } from \"./internal/internal.model\";\nimport { ViewportDataPipe } from \"./viewport/viewport-data/viewport-data.pipe\";\n\n/** @internal */\nexport const MODULE_CONFIG_DATA = new InjectionToken<UxOptions>(\"@ssv/ngx.ux/configData\");\n\nconst components = [\n\tSsvViewportMatcherDirective,\n\tSsvViewportMatcherVarDirective,\n\tViewportDataPipe,\n];\n\n// todo: create module for Viewport\n@NgModule({\n\tdeclarations: [components],\n\tproviders: [\n\t\t{ provide: UX_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },\n\t\t{ provide: WINDOW, useFactory: _window },\n\t],\n\texports: [...components],\n})\nexport class SsvUxModule {\n\n\tstatic forRoot(config?: PartialDeep<UxOptions> | (() => PartialDeep<UxOptions>)): ModuleWithProviders<SsvUxModule> {\n\t\treturn {\n\t\t\tngModule: SsvUxModule,\n\t\t\tproviders: [\n\t\t\t\t{ provide: MODULE_CONFIG_DATA, useValue: config },\n\t\t\t],\n\t\t};\n\t}\n\n}\n\n/** @internal */\nexport function _moduleConfigFactory(config: UxOptions | (() => UxOptions)): UxOptions {\n\tif(!config) {\n\t\treturn UX_DEFAULT_CONFIG;\n\t}\n\tconst uxOptions = typeof config === \"function\" ? config() : config;\n\tconst viewport = {\n\t\t...UX_DEFAULT_CONFIG.viewport,\n\t\t...uxOptions.viewport\n\t}; // breakpoints shouldn't be merged\n\n\treturn { viewport };\n}\n\n/** @internal */\nexport function _window(): unknown {\n\tif (typeof window !== \"undefined\") {\n\t\treturn window;\n\t}\n\treturn {};\n}\n","export const VERSION = \"1.4.0\";\n"],"names":["ViewportDataMatchStrategy","InjectionToken","Inject","Injectable","ViewportSizeType","ComparisonOperation","DeviceType","_a","Optional","fromEvent","map","auditTime","share","of","startWith","distinctUntilChanged","shareReplay","tap","matchStrategyHandlerMap","Subscription","ChangeDetectorRef","Pipe","Subject","ReplaySubject","combineLatest","takeUntil","ViewContainerRef","TemplateRef","Input","Directive","filter","pairwise","Renderer2","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"ssv-ngx.ux.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","ng://@ssv/ngx.ux/viewport/viewport-data/viewport-data-matcher.ts","ng://@ssv/ngx.ux/viewport/viewport.const.ts","ng://@ssv/ngx.ux/config.ts","ng://@ssv/ngx.ux/platform/window.ts","ng://@ssv/ngx.ux/viewport/viewport.model.ts","ng://@ssv/ngx.ux/viewport/viewport-server-size.service.ts","ng://@ssv/ngx.ux/viewport/viewport.util.ts","ng://@ssv/ngx.ux/viewport/viewport.service.ts","ng://@ssv/ngx.ux/viewport/viewport-data/viewport-data.utils.ts","ng://@ssv/ngx.ux/viewport/viewport-data/viewport-data.service.ts","ng://@ssv/ngx.ux/viewport/viewport-data/viewport-data.pipe.ts","ng://@ssv/ngx.ux/viewport/viewport-matcher-var.directive.ts","ng://@ssv/ngx.ux/viewport/viewport-matcher.directive.ts","ng://@ssv/ngx.ux/module.ts","ng://@ssv/ngx.ux/version.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Dictionary } from \"../../internal/internal.model\";\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\n\nexport type ViewportDataConfig<TValue = unknown, TData = Dictionary<TValue>> = TData & {\n\tdefault?: TValue\n};\n\nexport enum ViewportDataMatchStrategy {\n\t/** Indicates that size should match exact or default. */\n\texact,\n\n\t/** Indicates that size matches when exact match, first match smaller (down) or default. */\n\tsmaller,\n\n\t/** Indicates that size matches when exact match, first match larger (up) or default. */\n\tlarger,\n\n\t/** Indicates that size matches when exact match, or it tries both smaller/larger (smaller is preferred) until match or default. */\n\tclosestSmallerFirst,\n\n\t/** Indicates that size matches when exact match, or it tries both larger/smaller (larger is preferred) until match or default. */\n\tclosestLargerFirst,\n}\nexport type ViewportDataMatchStrategyLiteral = keyof typeof ViewportDataMatchStrategy;\n\nexport interface ViewportDataMatcher<T = unknown> {\n\t(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tcurrentSizeType: ViewportSizeTypeInfo,\n\t\tsizeTypes: ViewportSizeTypeInfo[],\n\t\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n\t): T | undefined;\n}\n\n/**\n * Utility function to match data based on strategy and size.\n *\n * @param dataConfig Data config to generate rules based on.\n * @param sizeType Size type to get data for.\n * @param strategy Strategy to use when building rules.\n * @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)\n * @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)\n * @returns Returns the matched data value.\n */\nexport function matchViewportData<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tsizeType: ViewportSizeTypeInfo,\n\tstrategy: ViewportDataMatchStrategy,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n): T | undefined {\n\tconst matchFn = matchStrategyHandlerMap[strategy];\n\tif (!matchFn) {\n\t\tthrow Error(`matchViewportData: Viewport Data strategy not implemented. Strategy: '${strategy}'`);\n\t}\n\tconst data = matchFn(dataConfig, sizeType, sizeTypes, sizeTypeMap) as T;\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\treturn dataConfig.default;\n}\n\n\nconst matchStrategyHandlerMap: Dictionary<ViewportDataMatcher> = {\n\t[ViewportDataMatchStrategy.exact]: matchWithExact,\n\t[ViewportDataMatchStrategy.larger]: matchWithLargerMatch,\n\t[ViewportDataMatchStrategy.smaller]: matchWithSmallerMatch,\n\t[ViewportDataMatchStrategy.closestSmallerFirst]: matchWithClosestSmallerFirstMatch,\n\t[ViewportDataMatchStrategy.closestLargerFirst]: matchWithClosestLargerFirstMatch,\n};\n\nfunction matchWithExact<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n): T | undefined {\n\treturn dataConfig[currentSizeType.name];\n}\n\nfunction matchWithLargerMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tconst largestTypeIdx = sizeTypes[sizeTypes.length - 1].type;\n\tif (currentSizeType.type >= largestTypeIdx) {\n\t\treturn undefined;\n\t}\n\n\tfor (let index = currentSizeType.type; index < sizeTypes.length; index++) {\n\t\tconst sizeType = sizeTypes[index];\n\t\tdata = dataConfig[sizeType.name];\n\t\tif (data !== undefined) {\n\t\t\treturn data;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction matchWithSmallerMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tif (currentSizeType.type <= 0) {\n\t\treturn undefined;\n\t}\n\n\t// eslint-disable-next-line for-direction\n\tfor (let index = currentSizeType.type; index < sizeTypes.length; index--) {\n\t\tconst sizeType = sizeTypes[index];\n\t\tdata = dataConfig[sizeType.name];\n\t\tif (data !== undefined) {\n\t\t\treturn data;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction matchWithClosestSmallerFirstMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\treturn closestMatch(dataConfig, currentSizeType, sizeTypes, true);\n}\n\nfunction matchWithClosestLargerFirstMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n): T | undefined {\n\treturn closestMatch(dataConfig, currentSizeType, sizeTypes, false);\n}\n\nfunction closestMatch<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tcurrentSizeType: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tisSmallerFirst: boolean\n): T | undefined {\n\tlet data = dataConfig[currentSizeType.name];\n\tif (data !== undefined) {\n\t\treturn data;\n\t}\n\n\tlet downIndex = currentSizeType.type;\n\tlet upIndex = currentSizeType.type;\n\n\t// eslint-disable-next-line @typescript-eslint/prefer-for-of\n\tfor (let index = 0; index < sizeTypes.length; index++) {\n\t\tfor (const idx of isSmallerFirst ? [--downIndex, ++upIndex] : [++upIndex, --downIndex]) {\n\t\t\tconst sizeType = sizeTypes[idx];\n\t\t\tif (sizeType) {\n\t\t\t\tdata = dataConfig[sizeType.name];\n\t\t\t\tif (data !== undefined) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n","import { Dictionary } from \"../internal/internal.model\";\nimport { ViewportDataMatchStrategy } from \"./viewport-data/viewport-data-matcher\";\nimport { UxViewportOptions } from \"./viewport.model\";\n\n/** Default viewport breakpoints. */\nexport const UX_VIEWPORT_DEFAULT_BREAKPOINTS: Dictionary<number> = {\n\txsmall: 450,\n\tsmall: 767,\n\tmedium: 992,\n\tlarge: 1200,\n\txlarge: 1500,\n\txxlarge: 1920,\n\txxlarge1: 2100,\n};\n\nexport const UX_VIEWPORT_DEFAULT_CONFIG: UxViewportOptions = {\n\tresizePollingSpeed: 33,\n\tbreakpoints: UX_VIEWPORT_DEFAULT_BREAKPOINTS,\n\tdefaultDataMatchStrategy: ViewportDataMatchStrategy.smaller,\n};\n","import { InjectionToken } from \"@angular/core\";\nimport { UX_VIEWPORT_DEFAULT_CONFIG } from \"./viewport/viewport.const\";\nimport { UxViewportOptions } from \"./viewport/viewport.model\";\n\nexport interface UxOptions {\n\tviewport: UxViewportOptions;\n}\n\nexport const UX_DEFAULT_CONFIG: UxOptions = {\n\tviewport: UX_VIEWPORT_DEFAULT_CONFIG,\n};\n\nexport const UX_CONFIG = new InjectionToken<UxOptions>(\"@ssv/ngx.ux-config\");\n","import { InjectionToken, Injectable, Inject } from \"@angular/core\";\n\nexport const WINDOW = new InjectionToken<Window>(\"Window\");\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class WindowRef {\n\n\tconstructor(\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\t\t@Inject(WINDOW) private window: any\n\t) {\n\t}\n\n\t/** Window underlying native object. */\n\tget native(): Window {\n\t\treturn this.window as Window;\n\t}\n\n\t/** Determines whether native element is supported or not. Generally `false` when executing in SSR. */\n\tget hasNative(): boolean {\n\t\treturn !!this.native.window;\n\t}\n\n}\n","import { Dictionary } from \"../internal/internal.model\";\nimport { ViewportDataMatchStrategy } from \"./viewport-data\";\n\n/**\n * The indices of each breakpoint provided based on the `UX_VIEWPORT_DEFAULT_BREAKPOINTS`.\n * @see UX_VIEWPORT_DEFAULT_BREAKPOINTS\n */\nexport enum ViewportSizeType {\n\txsmall = 0,\n\tsmall = 1,\n\tmedium = 2,\n\tlarge = 3,\n\txlarge = 4,\n\txxlarge = 5,\n\txxlarge1 = 6,\n}\n\nexport enum ComparisonOperation {\n\tequals = \"=\",\n\tnotEquals = \"<>\",\n\tlessThan = \"<\",\n\tlessOrEqualThan = \"<=\",\n\tgreaterThan = \">\",\n\tgreaterOrEqualThan = \">=\",\n}\n\nexport enum DeviceType {\n\tdesktop = \"desktop\",\n\tmobile = \"mobile\",\n\ttablet = \"tablet\"\n}\n\nexport interface UxViewportOptions {\n\t/** Polling speed on resizing (in milliseconds). e.g. the higher the number the longer it takes to recalculate. */\n\tresizePollingSpeed: number;\n\n\t/** Breakpoints to use. Key needs to match the size type and the value the width threshold.\n\t * e.g. given width '1000' and `medium` is set to '992' => `large`.\n\t */\n\tbreakpoints: Dictionary<number>;\n\n\t/** Default data match strategy to use. */\n\tdefaultDataMatchStrategy: ViewportDataMatchStrategy;\n}\n\nexport interface ViewportSize {\n\twidth: number;\n\theight: number;\n}\n\nexport interface ViewportSizeTypeInfo {\n\ttype: number;\n\tname: string;\n\twidthThreshold: number;\n}\n\nexport interface ViewportMatchConditions {\n\tsizeType?: string | string[] | null;\n\tsizeTypeExclude?: string | string[] | null;\n\texpression?: ViewportSizeMatcherExpression;\n}\n\nexport interface ViewportSizeMatcherExpression {\n\tsize: string;\n\toperation: ComparisonOperation;\n}\n","import { Injectable, Inject, InjectionToken, Optional } from \"@angular/core\";\n\nimport { Dictionary } from \"../internal/internal.model\";\nimport { DeviceType, ViewportSize } from \"./viewport.model\";\nimport { UxOptions } from \"../config\";\n\n// todo: make this configurable\n/** Viewport size for SSR. */\nconst viewportSizeSSR: Dictionary<ViewportSize> = {\n\t[DeviceType.desktop]: {\n\t\twidth: 1366,\n\t\theight: 768,\n\t},\n\t[DeviceType.tablet]: {\n\t\twidth: 768,\n\t\theight: 1024,\n\t},\n\t[DeviceType.mobile]: {\n\t\twidth: 414,\n\t\theight: 736,\n\t},\n};\n\nexport const UX_VIEWPORT_SSR_DEVICE = new InjectionToken<UxOptions>(\"@ssv/ngx.ux-config/viewport/ssr-device\");\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportServerSizeService {\n\n\tconstructor(\n\t\t@Optional() @Inject(UX_VIEWPORT_SSR_DEVICE) private deviceType: DeviceType,\n\t) {\n\t}\n\n\tget(): ViewportSize {\n\t\treturn viewportSizeSSR[this.deviceType] || viewportSizeSSR[DeviceType.desktop];\n\t}\n\n}\n","import { Dictionary } from \"../internal/internal.model\";\nimport {\n\tComparisonOperation,\n\tViewportSizeMatcherExpression,\n\tViewportSizeTypeInfo,\n\tViewportMatchConditions\n} from \"./viewport.model\";\n\nexport function isViewportSizeMatcherExpression(value: unknown): value is ViewportSizeMatcherExpression {\n\tif (typeof value !== \"object\" || !value) {\n\t\treturn false;\n\t}\n\tconst args: Partial<ViewportSizeMatcherExpression> = value;\n\tif (args.size && args.operation) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function isViewportSizeMatcherTupleExpression(arg: unknown): arg is [ComparisonOperation, string] {\n\tif (!arg) {\n\t\treturn false;\n\t}\n\tif (Array.isArray(arg)) {\n\t\tif (arg.length === 2) {\n\t\t\tconst [op] = arg;\n\t\t\treturn operations.includes(op);\n\t\t}\n\t}\n\treturn false;\n}\n\n\nconst operations = Object.values(ComparisonOperation);\n\nexport const COMPARISON_OPERATION_FUNC_MAPPING: Dictionary<(a: number, b: number) => boolean> = {\n\t[ComparisonOperation.equals]: (a: number, b: number) => a === b,\n\t[ComparisonOperation.notEquals]: (a: number, b: number) => a !== b,\n\t[ComparisonOperation.lessThan]: (a: number, b: number) => a < b,\n\t[ComparisonOperation.lessOrEqualThan]: (a: number, b: number) => a <= b,\n\t[ComparisonOperation.greaterThan]: (a: number, b: number) => a > b,\n\t[ComparisonOperation.greaterOrEqualThan]: (a: number, b: number) => a >= b,\n};\n\nexport function isViewportConditionMatch(\n\tevaluateSize: ViewportSizeTypeInfo,\n\tconditions: ViewportMatchConditions,\n\tviewportSizeTypeInfoRefs: Dictionary<ViewportSizeTypeInfo>\n): boolean {\n\tconst isExcluded = match(conditions.sizeTypeExclude, evaluateSize.name, false);\n\tlet isIncluded;\n\tlet isExpressionTruthy;\n\n\tif (!isExcluded && conditions.expression) {\n\t\tconst ref = viewportSizeTypeInfoRefs[conditions.expression.size];\n\t\tif(!ref) {\n\t\t\tthrow new Error(`Viewport size type is invalid. Size type: '${conditions.expression.size}'`);\n\t\t}\n\t\tconst expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expression.operation];\n\n\t\tisExpressionTruthy = expMatcher(evaluateSize.type, ref.type);\n\t} else {\n\t\tisIncluded = match(conditions.sizeType, evaluateSize.name, true);\n\t}\n\n\tconst shouldRender = (isExpressionTruthy || isIncluded) && !isExcluded;\n\t// console.warn(\">>> shouldRender\", { evaluateSize, conditions, shouldRender });\n\treturn !!shouldRender;\n}\n\nfunction match(value: string | string[] | null | undefined, targetValue: string, defaultValue: boolean) {\n\tif (!value) {\n\t\treturn defaultValue;\n\t}\n\n\treturn Array.isArray(value)\n\t\t? value.includes(targetValue)\n\t\t: value === targetValue;\n}\n\nexport function getSizeTypeInfo(width: number, sizeTypes: ViewportSizeTypeInfo[]): ViewportSizeTypeInfo {\n\tconst lastEntryIndex = sizeTypes.length - 1;\n\n\tfor (let idx = 0; idx < lastEntryIndex; idx++) {\n\t\tconst viewportSizeTypeInfo = sizeTypes[idx];\n\n\t\tif (width <= viewportSizeTypeInfo.widthThreshold) {\n\t\t\treturn viewportSizeTypeInfo;\n\t\t}\n\t}\n\n\treturn sizeTypes[lastEntryIndex];\n}\n\n/**\n * Converts the breakpoints into a 2 dimensional array containing the name and width, and sorted from\n * smallest to largest.\n * @param breakpoints the breakpoints obtained from the config\n * @internal\n */\nfunction getSortedBreakpoints(breakpoints: Dictionary<number>): [string, number][] {\n\treturn Object.entries(breakpoints)\n\t\t.sort(([, widthA], [, widthB]) => widthA - widthB);\n}\n\n/**\n * A util function which generates the ViewportSizeTypeInfo.type for each breakpoint.\n * @param breakpoints the custom breakpoints\n */\nexport function generateViewportSizeType<T extends Record<string, number>>(breakpoints: T): T & Record<number, string> {\n\treturn Object.freeze(\n\t\tgetSortedBreakpoints(breakpoints).reduce<Record<number | string, string | number>>(\n\t\t\t(dictionary, [name], index) => {\n\t\t\t\tdictionary[name] = index;\n\t\t\t\tdictionary[index] = name;\n\t\t\t\treturn dictionary;\n\t\t\t}, {}\n\t\t)\n\t) as T & Record<number, string>;\n}\n\n/**\n * Pre-processes the given breakpoints into an ordered list from smallest to largest while generating\n * all the necessary information on the viewport.\n * @param breakpoints the breakpoints obtained from the config\n * @internal\n */\nexport function generateViewportSizeTypeInfoList(breakpoints: Dictionary<number>): ViewportSizeTypeInfo[] {\n\treturn getSortedBreakpoints(breakpoints)\n\t\t.map(([name, width], index) =>\n\t\t\t(Object.freeze({\n\t\t\t\tname,\n\t\t\t\ttype: index,\n\t\t\t\twidthThreshold: width\n\t\t\t}))\n\t\t);\n}\n\n/**\n * Converts the breakpoint list into a dictionary while using the name as key.\n * @param breakpointList the list of breakpoints\n * @internal\n */\nexport function generateViewportSizeTypeInfoRefs(breakpointList: ViewportSizeTypeInfo[]): Dictionary<ViewportSizeTypeInfo> {\n\treturn Object.freeze(\n\t\tbreakpointList.reduce<Dictionary<ViewportSizeTypeInfo>>((dictionary, breakpoint) => {\n\t\t\tdictionary[breakpoint.name] = breakpoint;\n\t\t\tdictionary[breakpoint.type] = breakpoint;\n\t\t\treturn dictionary;\n\t\t}, {})\n\t);\n}\n","import { Injectable, Inject } from \"@angular/core\";\nimport { Observable, fromEvent, of } from \"rxjs\";\nimport {\n\tmap,\n\ttap,\n\tdistinctUntilChanged,\n\tstartWith,\n\tshare,\n\tshareReplay,\n\tauditTime,\n} from \"rxjs/operators\";\n\nimport { UxOptions, UX_CONFIG } from \"../config\";\nimport { ViewportSizeTypeInfo, ViewportSize } from \"./viewport.model\";\nimport { WindowRef } from \"../platform/window\";\nimport { ViewportServerSizeService } from \"./viewport-server-size.service\";\nimport { generateViewportSizeTypeInfoList, generateViewportSizeTypeInfoRefs, getSizeTypeInfo } from \"./viewport.util\";\nimport { Dictionary } from \"../internal/internal.model\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportService {\n\n\t/** Window resize observable. */\n\treadonly resizeSnap$: Observable<ViewportSize>;\n\n\t/** Window resize observable (which is also throttled). */\n\treadonly resize$: Observable<ViewportSize>;\n\n\t/** Viewport size type observable (which is also throttled). */\n\treadonly sizeType$: Observable<ViewportSizeTypeInfo>;\n\n\t/** Viewport size type observable. */\n\treadonly sizeTypeSnap$: Observable<ViewportSizeTypeInfo>;\n\n\t/** Viewport size type snapshot of the last value. (Prefer use `sizeType$` observable when possible.) */\n\tget sizeTypeSnapshot(): ViewportSizeTypeInfo { return this._sizeTypeSnapshot; }\n\n\t/** Viewport size observable (which is also throttled). */\n\treadonly size$: Observable<ViewportSize>;\n\n\t/** Viewport size observable. */\n\treadonly sizeSnap$: Observable<ViewportSize>;\n\n\t/** Size types refs of the generated viewport size type info. */\n\tget sizeTypeMap(): Dictionary<ViewportSizeTypeInfo> { return this._sizeTypeMap; }\n\n\t/** Viewport size types list ordered by type, smallest to largest. */\n\tget sizeTypes(): ViewportSizeTypeInfo[] { return this._sizeTypes; }\n\n\tprivate _sizeTypeMap: Dictionary<ViewportSizeTypeInfo>;\n\tprivate _sizeTypes: ViewportSizeTypeInfo[];\n\tprivate _sizeTypeSnapshot: ViewportSizeTypeInfo;\n\n\tconstructor(\n\t\tprivate windowRef: WindowRef,\n\t\tprivate viewportServerSize: ViewportServerSizeService,\n\t\t@Inject(UX_CONFIG) config: UxOptions,\n\t) {\n\t\tthis._sizeTypes = generateViewportSizeTypeInfoList(config.viewport.breakpoints);\n\t\tthis._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);\n\n\t\tif (windowRef.hasNative) {\n\t\t\tthis.resizeSnap$ = fromEvent<Event>(window, \"resize\").pipe(\n\t\t\t\tmap(() => this.getViewportSize()),\n\t\t\t\tshare()\n\t\t\t);\n\n\t\t\tthis.resize$ = this.resizeSnap$.pipe(\n\t\t\t\tauditTime(config.viewport.resizePollingSpeed),\n\t\t\t\tshare(),\n\t\t\t);\n\t\t} else {\n\t\t\tthis.resizeSnap$ = this.resize$ = of(viewportServerSize.get());\n\t\t}\n\t\tconst size = this.getViewportSize();\n\t\tthis._sizeTypeSnapshot = getSizeTypeInfo(size.width, this.sizeTypes);\n\n\t\tconst sizeFn = (obs$: Observable<ViewportSize>) => obs$.pipe(\n\t\t\tstartWith(size),\n\t\t\tdistinctUntilChanged((a, b) => a.width === b.width && a.height === b.height),\n\t\t\tshareReplay(1),\n\t\t);\n\n\t\tthis.sizeSnap$ = sizeFn(this.resizeSnap$);\n\t\tthis.size$ = sizeFn(this.resize$);\n\n\t\tconst sizeTypeFn = (obs$: Observable<ViewportSize>) => obs$.pipe(\n\t\t\tdistinctUntilChanged((a, b) => a.width === b.width),\n\t\t\tmap(x => getSizeTypeInfo(x.width, this.sizeTypes)),\n\t\t\tdistinctUntilChanged(),\n\t\t\ttap(x => this._sizeTypeSnapshot = x),\n\t\t\tshareReplay(1),\n\t\t);\n\n\t\tthis.sizeType$ = sizeTypeFn(this.size$);\n\t\tthis.sizeTypeSnap$ = sizeTypeFn(this.sizeSnap$);\n\t}\n\n\t/**\n\t * Calculates amount of items that fits into container's width.\n\t * @param containerWidth\n\t * @param itemWidth\n\t * @returns\n\t */\n\tcalculateItemsPerRow(containerWidth: number, itemWidth: number): number {\n\t\tif (containerWidth === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (!containerWidth && !this.windowRef.hasNative) {\n\t\t\t// todo: find a way to get container width for ssr\n\t\t\tcontainerWidth = this.viewportServerSize.get().width;\n\t\t}\n\n\t\treturn containerWidth / itemWidth;\n\t}\n\n\t/** Returns the current viewport size */\n\tprivate getViewportSize(): ViewportSize {\n\t\tif (!this.windowRef.hasNative) {\n\t\t\treturn this.viewportServerSize.get();\n\t\t}\n\n\t\tconst ua = navigator.userAgent.toLowerCase();\n\t\tif (ua.indexOf(\"safari\") !== -1 && ua.indexOf(\"chrome\") === -1) { // safari subtracts the scrollbar width\n\t\t\treturn {\n\t\t\t\twidth: this.windowRef.native.document.documentElement.clientWidth,\n\t\t\t\theight: this.windowRef.native.document.documentElement.clientHeight,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\twidth: this.windowRef.native.innerWidth,\n\t\t\theight: this.windowRef.native.innerHeight,\n\t\t};\n\t}\n\n}\n","import { Dictionary } from \"../../internal/internal.model\";\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\nimport { ViewportDataConfig, ViewportDataMatchStrategy } from \"./viewport-data-matcher\";\n\nexport interface ViewportDataRule<T> {\n\tmin?: number;\n\tmax?: number;\n\tvalue: T;\n}\n\n/**\n * Utility function to generate rules based on strategies.\n *\n * @param dataConfig Data config to generate rules based on.\n * @param strategy Strategy to use when building rules.\n * @param sizeTypes Available size types ordered by index type. (Can be obtained from `ViewportService`)\n * @param sizeTypeMap Available size type map. (Can be obtained from `ViewportService`)\n * @returns Returns a collection of rules (ordered).\n */\nexport function generateViewportRulesRangeFromDataMatcher<T>(\n\tdataConfig: ViewportDataConfig<T>,\n\tstrategy: ViewportDataMatchStrategy,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tsizeTypeMap: Dictionary<ViewportSizeTypeInfo>,\n): ViewportDataRule<T>[] {\n\tconst ruleBuilderFn = matchStrategyHandlerMap[strategy];\n\tif (!ruleBuilderFn) {\n\t\tthrow Error(`generateViewportRulesRangeFromDataMatcher: Viewport Data strategy not implemented. Strategy: '${strategy}'`);\n\t}\n\n\tlet dataSizes: ViewportSizeTypeInfo[] = [];\n\tfor (const key in dataConfig) {\n\t\tif (Object.prototype.hasOwnProperty.call(dataConfig, key)) {\n\t\t\tconst data = dataConfig[key];\n\t\t\tif (data === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst size = sizeTypeMap[key];\n\t\t\tif (size) {\n\t\t\t\tdataSizes.push(size);\n\t\t\t}\n\t\t}\n\t}\n\tdataSizes = dataSizes.sort(({ type: typeA }, { type: typeB }) => typeA - typeB);\n\n\tconst rules: ViewportDataRule<T>[] = [];\n\tif (dataConfig.default) {\n\t\trules.push({ value: dataConfig.default, min: undefined, max: undefined });\n\t}\n\n\tlet prevRule: ViewportDataRule<T> | undefined;\n\tfor (let index = 0; index < dataSizes.length; index++) {\n\t\tconst prevDataSize = dataSizes[index - 1];\n\t\tconst nextDataSize = dataSizes[index + 1];\n\t\tconst dataSize = dataSizes[index];\n\t\tconst prevSize = sizeTypes[dataSize.type - 1];\n\t\t// const nextSize = sizeTypes[dataSize.type + 1];\n\t\tconst data = dataConfig[dataSize.name];\n\t\tconst rule: ViewportDataRule<T> = {\n\t\t\tvalue: data,\n\t\t\tmin: undefined,\n\t\t\tmax: undefined,\n\t\t};\n\n\t\truleBuilderFn(rule, dataSize, nextDataSize, prevDataSize, prevSize, prevRule, sizeTypes);\n\n\t\tprevRule = rule;\n\t\trules.push(rule);\n\t}\n\treturn rules;\n}\n\nexport interface ViewportRuleRangeBuilder<T = unknown> {\n\t(\n\t\trule: ViewportDataRule<T>,\n\t\tdataSize: ViewportSizeTypeInfo,\n\t\tnextDataSize: ViewportSizeTypeInfo | undefined,\n\t\tprevDataSize: ViewportSizeTypeInfo | undefined,\n\t\tprevSize: ViewportSizeTypeInfo | undefined,\n\t\tprevRule: ViewportDataRule<T> | undefined,\n\t\tsizeTypes: ViewportSizeTypeInfo[],\n\t): void;\n}\n\nconst matchStrategyHandlerMap: Dictionary<ViewportRuleRangeBuilder> = {\n\t[ViewportDataMatchStrategy.exact]: (rule, dataSize, _nextDataSize, _prevDataSize, prevSize) => {\n\t\trule.max = dataSize.widthThreshold;\n\t\tif (prevSize) {\n\t\t\trule.min = prevSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.smaller]: (rule, dataSize, nextDataSize, _prevDataSize, prevSize) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = dataSize.widthThreshold;\n\t\t}\n\t\tif (prevSize) {\n\t\t\trule.min = prevSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.larger]: (rule, dataSize, _nextDataSize, prevDataSize) => {\n\t\tif (dataSize) {\n\t\t\trule.max = dataSize.widthThreshold;\n\t\t}\n\t\tif (prevDataSize) {\n\t\t\trule.min = prevDataSize.widthThreshold + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.closestSmallerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, true);\n\t\t}\n\t\tif (prevRule?.max) {\n\t\t\trule.min = prevRule.max + 1;\n\t\t}\n\t},\n\t[ViewportDataMatchStrategy.closestLargerFirst]: (rule, dataSize, nextDataSize, _prevDataSize, _prevSize, prevRule, sizeTypes) => {\n\t\tif (nextDataSize) {\n\t\t\trule.max = calculateClosestWidthThreshold(nextDataSize, dataSize, sizeTypes, false);\n\t\t}\n\t\tif (prevRule?.max) {\n\t\t\trule.min = prevRule.max + 1;\n\t\t}\n\t},\n};\n\nfunction calculateClosestWidthThreshold(\n\tnextDataSize: ViewportSizeTypeInfo,\n\tdataSize: ViewportSizeTypeInfo,\n\tsizeTypes: ViewportSizeTypeInfo[],\n\tisSmallerPreferred: boolean,\n) {\n\tconst fn = isSmallerPreferred ? Math.ceil : Math.floor;\n\t// get closest between curr and next\n\tconst diffIndex = fn((nextDataSize.type - dataSize.type - 1) / 2);\n\tconst diffNextSize = sizeTypes[dataSize.type + diffIndex];\n\treturn (diffNextSize || dataSize).widthThreshold;\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { distinctUntilChanged, map } from \"rxjs/operators\";\nimport { UX_CONFIG, UxOptions } from \"../../config\";\n\nimport { ViewportSizeTypeInfo } from \"../viewport.model\";\nimport { ViewportService } from \"../viewport.service\";\nimport { matchViewportData, ViewportDataConfig, ViewportDataMatchStrategy } from \"./viewport-data-matcher\";\nimport { generateViewportRulesRangeFromDataMatcher, ViewportDataRule } from \"./viewport-data.utils\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class ViewportDataService {\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\t@Inject(UX_CONFIG) private config: UxOptions,\n\t) {\n\t}\n\n\t/** Get data for match. */\n\tget<T>(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tstrategy: ViewportDataMatchStrategy = this.config.viewport.defaultDataMatchStrategy,\n\t\tsizeType: ViewportSizeTypeInfo = this.viewport.sizeTypeSnapshot\n\t): T | undefined {\n\t\treturn matchViewportData(dataConfig, sizeType, strategy, this.viewport.sizeTypes, this.viewport.sizeTypeMap);\n\t}\n\n\t/** Get data for match as observable. */\n\tget$<T>(dataConfig: ViewportDataConfig<T>, strategy?: ViewportDataMatchStrategy, throttle = true): Observable<T | undefined> {\n\t\treturn (throttle ? this.viewport.sizeType$ : this.viewport.sizeTypeSnap$).pipe(\n\t\t\tmap(sizeType => this.get<T>(dataConfig, strategy, sizeType)),\n\t\t\tdistinctUntilChanged(),\n\t\t);\n\t}\n\n\t/** Generate rules based on strategies for data. */\n\tgenerateRules<T>(\n\t\tdataConfig: ViewportDataConfig<T>,\n\t\tstrategy: ViewportDataMatchStrategy = this.config.viewport.defaultDataMatchStrategy,\n\t): ViewportDataRule<T>[] {\n\t\treturn generateViewportRulesRangeFromDataMatcher(\n\t\t\tdataConfig,\n\t\t\tstrategy,\n\t\t\tthis.viewport.sizeTypes,\n\t\t\tthis.viewport.sizeTypeMap\n\t\t);\n\t}\n\n}\n","import { Subscription } from \"rxjs\";\nimport { tap } from \"rxjs/operators\";\nimport { Pipe, PipeTransform, OnDestroy, ChangeDetectorRef } from \"@angular/core\";\n\nimport { ViewportDataConfig, ViewportDataMatchStrategy, ViewportDataMatchStrategyLiteral } from \"./viewport-data-matcher\";\nimport { ViewportDataService } from \"./viewport-data.service\";\n\n/* eslint-disable @angular-eslint/no-pipe-impure */\n@Pipe({\n\tname: \"ssvViewportData\",\n\tpure: false\n})\nexport class ViewportDataPipe implements PipeTransform, OnDestroy {\n\n\tprivate markForTransform = true;\n\tprivate value: unknown;\n\tprivate data: ViewportDataConfig | undefined;\n\tprivate strategy: ViewportDataMatchStrategyLiteral | undefined;\n\tprivate data$$ = Subscription.EMPTY;\n\n\tconstructor(\n\t\tprivate viewportData: ViewportDataService,\n\t\tprivate cdr: ChangeDetectorRef\n\t) {\n\t}\n\n\ttransform(data: ViewportDataConfig, strategy: ViewportDataMatchStrategyLiteral): unknown {\n\t\tif (!this.markForTransform && data === this.data && strategy === this.strategy) {\n\t\t\treturn this.value;\n\t\t}\n\t\tthis.data = data;\n\t\tthis.strategy = strategy;\n\n\t\tthis.data$$.unsubscribe();\n\t\tthis.data$$ = this.viewportData.get$(data, ViewportDataMatchStrategy[strategy]).pipe(\n\t\t\ttap(value => {\n\t\t\t\tthis.markForTransform = true;\n\t\t\t\tthis.value = value;\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}),\n\t\t).subscribe();\n\n\t\tthis.markForTransform = false;\n\t\treturn this.value;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.data$$.unsubscribe();\n\t}\n\n}\n","import {\n\tOnInit,\n\tOnDestroy,\n\tDirective,\n\tInput,\n\tTemplateRef,\n\tViewContainerRef,\n\tEmbeddedViewRef,\n} from \"@angular/core\";\nimport { combineLatest, ReplaySubject, Subject } from \"rxjs\";\nimport { tap, map, takeUntil } from \"rxjs/operators\";\n\nimport { ViewportService } from \"./viewport.service\";\nimport {\n\tisViewportSizeMatcherExpression,\n\tisViewportSizeMatcherTupleExpression,\n\tisViewportConditionMatch\n} from \"./viewport.util\";\nimport { ViewportMatchConditions, ViewportSizeMatcherExpression } from \"./viewport.model\";\n\nconst NAME_CAMEL = \"ssvViewportMatcherVar\";\n\nexport class SsvViewportMatcherVarContext {\n\n\tconstructor(\n\t\tpublic $implicit = false,\n\t) { }\n\n}\n\n@Directive({\n\tselector: `[${NAME_CAMEL}]`,\n})\nexport class SsvViewportMatcherVarDirective implements OnInit, OnDestroy {\n\n\tprivate _matchConditions: ViewportMatchConditions = {};\n\tprivate _context = new SsvViewportMatcherVarContext();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _update$ = new ReplaySubject<void>(1);\n\tprivate _viewRef!: EmbeddedViewRef<SsvViewportMatcherVarContext>;\n\n\t@Input(`${NAME_CAMEL}When`) set condition(value: string | string[] | ViewportSizeMatcherExpression) {\n\t\tif (isViewportSizeMatcherExpression(value)) {\n\t\t\tthis._matchConditions.expression = value;\n\t\t} else if (isViewportSizeMatcherTupleExpression(value)) {\n\t\t\tconst [op, size] = value;\n\t\t\tthis._matchConditions.expression = {\n\t\t\t\toperation: op,\n\t\t\t\tsize\n\t\t\t};\n\t\t} else {\n\t\t\tthis._matchConditions.sizeType = value;\n\t\t}\n\n\t\tthis._update$.next();\n\t}\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\tprivate viewContainer: ViewContainerRef,\n\t\tprivate templateRef: TemplateRef<SsvViewportMatcherVarContext>,\n\t) {\n\t}\n\n\tngOnInit(): void {\n\t\tthis.updateView();\n\t\tcombineLatest([this.viewport.sizeType$, this._update$]).pipe(\n\t\t\tmap(([sizeType]) => isViewportConditionMatch(sizeType, this._matchConditions, this.viewport.sizeTypeMap)),\n\t\t\ttap(x => this._context.$implicit = x),\n\t\t\ttap(() => this._viewRef.markForCheck()),\n\t\t\ttakeUntil(this._destroy$),\n\t\t).subscribe();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tprivate updateView(): void {\n\t\tthis.viewContainer.clear();\n\t\tthis._viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this._context);\n\t}\n\n}\n","import {\n\tOnInit,\n\tOnDestroy,\n\tDirective,\n\tRenderer2,\n\tViewContainerRef,\n\tInput,\n\tEmbeddedViewRef,\n\tTemplateRef,\n\tChangeDetectorRef,\n} from \"@angular/core\";\nimport { Subscription, Subject } from \"rxjs\";\nimport { tap, filter, pairwise, startWith } from \"rxjs/operators\";\n\nimport { ViewportService } from \"./viewport.service\";\nimport {\n\tisViewportSizeMatcherExpression,\n\tisViewportSizeMatcherTupleExpression,\n\tisViewportConditionMatch\n} from \"./viewport.util\";\nimport { ViewportSizeTypeInfo, ViewportMatchConditions, ViewportSizeMatcherExpression } from \"./viewport.model\";\n\nexport class SsvViewportMatcherContext implements ViewportMatchConditions {\n\n\tsizeType: string | string[] | null = null;\n\tsizeTypeExclude: string | string[] | null = null;\n\texpression?: ViewportSizeMatcherExpression;\n\n}\n\n@Directive({\n\tselector: \"[ssvViewportMatcher]\",\n\texportAs: \"ssvViewportMatcher\",\n})\nexport class SsvViewportMatcherDirective implements OnInit, OnDestroy {\n\n\tsizeInfo: ViewportSizeTypeInfo | undefined;\n\n\tprivate _context: SsvViewportMatcherContext = new SsvViewportMatcherContext();\n\tprivate _thenTemplateRef: TemplateRef<SsvViewportMatcherContext> | null = null;\n\tprivate _elseTemplateRef: TemplateRef<SsvViewportMatcherContext> | null = null;\n\tprivate _thenViewRef: EmbeddedViewRef<SsvViewportMatcherContext> | null = null;\n\tprivate _elseViewRef: EmbeddedViewRef<SsvViewportMatcherContext> | null = null;\n\tprivate sizeType$$ = Subscription.EMPTY;\n\tprivate cssClass$$ = Subscription.EMPTY;\n\tprivate readonly _update$ = new Subject<SsvViewportMatcherContext>();\n\n\t@Input() set ssvViewportMatcher(value: string | string[] | ViewportSizeMatcherExpression) {\n\t\tif (isViewportSizeMatcherExpression(value)) {\n\t\t\tthis._context.expression = value;\n\t\t} else if (isViewportSizeMatcherTupleExpression(value)) {\n\t\t\tconst [op, size] = value;\n\t\t\tthis._context.expression = {\n\t\t\t\toperation: op,\n\t\t\t\tsize\n\t\t\t};\n\t\t} else {\n\t\t\tthis._context.sizeType = value;\n\t\t}\n\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\t@Input() set ssvViewportMatcherExclude(value: string | string[]) {\n\t\tthis._context.sizeTypeExclude = value;\n\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\t@Input() set ssvViewportMatcherElse(templateRef: TemplateRef<SsvViewportMatcherContext> | null) {\n\t\tthis._elseTemplateRef = templateRef;\n\t\tthis._elseViewRef = null; // clear previous view if any.\n\t\tif (this.sizeInfo) {\n\t\t\tthis._update$.next(this._context);\n\t\t}\n\t}\n\n\tconstructor(\n\t\tprivate viewport: ViewportService,\n\t\tprivate renderer: Renderer2,\n\t\tprivate viewContainer: ViewContainerRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t\ttemplateRef: TemplateRef<SsvViewportMatcherContext>,\n\t) {\n\t\tthis._thenTemplateRef = templateRef;\n\t}\n\n\tngOnInit(): void {\n\t\t// console.log(\"ssvViewportMatcher init\");\n\n\t\tthis._update$\n\t\t\t.pipe(\n\t\t\t\t// tap(x => console.log(\">>> ssvViewportMatcher - update triggered\", x)),\n\t\t\t\tfilter(() => !!this.sizeInfo),\n\t\t\t\t// tap(x => console.log(\">>> ssvViewportMatcher - updating...\", x)),\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\ttap(() => this._updateView(this.sizeInfo!)),\n\t\t\t\ttap(() => this.cdr.markForCheck())\n\t\t\t)\n\t\t\t.subscribe();\n\n\t\tthis.sizeType$$ = this.viewport.sizeType$\n\t\t\t.pipe(\n\t\t\t\t// tap(x => console.log(\"ssvViewportMatcher - sizeType changed\", x)),\n\t\t\t\ttap(x => this.sizeInfo = x),\n\t\t\t\ttap(() => this._update$.next(this._context)),\n\t\t\t)\n\t\t\t.subscribe();\n\n\t\tthis.cssClass$$ = this.viewport.sizeType$\n\t\t\t.pipe(\n\t\t\t\tstartWith<ViewportSizeTypeInfo | undefined>(undefined),\n\t\t\t\tfilter(() => !!(this._thenViewRef || this._elseViewRef)),\n\t\t\t\tpairwise(),\n\t\t\t\ttap(([prev, curr]) => {\n\t\t\t\t\tconst el: Element = this._thenViewRef\n\t\t\t\t\t\t? this._thenViewRef.rootNodes[0]\n\t\t\t\t\t\t: this._elseViewRef?.rootNodes[0];\n\n\t\t\t\t\tif (!el.classList) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (prev) {\n\t\t\t\t\t\tthis.renderer.removeClass(el, `ssv-vp-size--${prev.name}`);\n\t\t\t\t\t}\n\t\t\t\t\tthis.renderer.addClass(el, `ssv-vp-size--${curr?.name}`);\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.cssClass$$.unsubscribe();\n\t\tthis.sizeType$$.unsubscribe();\n\t\tthis._update$.complete();\n\t}\n\n\tprivate _updateView(sizeInfo: ViewportSizeTypeInfo) {\n\t\tif (isViewportConditionMatch(sizeInfo, this._context, this.viewport.sizeTypeMap)) {\n\t\t\tif (!this._thenViewRef) {\n\t\t\t\tthis.viewContainer.clear();\n\t\t\t\tthis._elseViewRef = null;\n\n\t\t\t\tif (this._thenTemplateRef) {\n\t\t\t\t\tthis._thenViewRef = this.viewContainer.createEmbeddedView(\n\t\t\t\t\t\tthis._thenTemplateRef,\n\t\t\t\t\t\tthis._context,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this._elseViewRef) {\n\t\t\t\tthis.viewContainer.clear();\n\t\t\t\tthis._thenViewRef = null;\n\n\t\t\t\tif (this._elseTemplateRef) {\n\t\t\t\t\tthis._elseViewRef = this.viewContainer.createEmbeddedView(\n\t\t\t\t\t\tthis._elseTemplateRef,\n\t\t\t\t\t\tthis._context,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n}\n","import { NgModule, ModuleWithProviders, InjectionToken, Optional } from \"@angular/core\";\n\nimport { SsvViewportMatcherDirective, SsvViewportMatcherVarDirective } from \"./viewport/index\";\nimport { UxOptions, UX_DEFAULT_CONFIG, UX_CONFIG } from \"./config\";\nimport { WINDOW } from \"./platform/window\";\nimport { PartialDeep } from \"./internal/internal.model\";\nimport { ViewportDataPipe } from \"./viewport/viewport-data/viewport-data.pipe\";\n\n/** @internal */\nexport const MODULE_CONFIG_DATA = new InjectionToken<UxOptions>(\"@ssv/ngx.ux/configData\");\n\nconst components = [\n\tSsvViewportMatcherDirective,\n\tSsvViewportMatcherVarDirective,\n\tViewportDataPipe,\n];\n\n// todo: create module for Viewport\n@NgModule({\n\tdeclarations: [components],\n\tproviders: [\n\t\t{ provide: UX_CONFIG, useFactory: _moduleConfigFactory, deps: [[MODULE_CONFIG_DATA, new Optional()]] },\n\t\t{ provide: WINDOW, useFactory: _window },\n\t],\n\texports: [...components],\n})\nexport class SsvUxModule {\n\n\tstatic forRoot(config?: PartialDeep<UxOptions> | (() => PartialDeep<UxOptions>)): ModuleWithProviders<SsvUxModule> {\n\t\treturn {\n\t\t\tngModule: SsvUxModule,\n\t\t\tproviders: [\n\t\t\t\t{ provide: MODULE_CONFIG_DATA, useValue: config },\n\t\t\t],\n\t\t};\n\t}\n\n}\n\n/** @internal */\nexport function _moduleConfigFactory(config: UxOptions | (() => UxOptions)): UxOptions {\n\tif(!config) {\n\t\treturn UX_DEFAULT_CONFIG;\n\t}\n\tconst uxOptions = typeof config === \"function\" ? config() : config;\n\tconst viewport = {\n\t\t...UX_DEFAULT_CONFIG.viewport,\n\t\t...uxOptions.viewport\n\t}; // breakpoints shouldn't be merged\n\n\treturn { viewport };\n}\n\n/** @internal */\nexport function _window(): unknown {\n\tif (typeof window !== \"undefined\") {\n\t\treturn window;\n\t}\n\treturn {};\n}\n","export const VERSION = \"1.4.1\";\n"],"names":["ViewportDataMatchStrategy","InjectionToken","Inject","Injectable","ViewportSizeType","ComparisonOperation","DeviceType","_a","Optional","fromEvent","map","share","auditTime","of","startWith","distinctUntilChanged","shareReplay","tap","matchStrategyHandlerMap","Subscription","ChangeDetectorRef","Pipe","Subject","ReplaySubject","combineLatest","takeUntil","ViewContainerRef","TemplateRef","Input","Directive","filter","pairwise","Renderer2","NgModule"],"mappings":"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"}
@@ -12,5 +12,5 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */var n,o,a=function(){return(a=Object.assign||function(e){for(var t,r=1,i=arguments.length;r<i;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function s(e,t,r,i){var n,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,i);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(a=(o<3?n(a):o>3?n(t,r,a):n(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a}function p(e,t){return function(r,i){t(r,i,e)}}function c(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function u(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var i,n,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(i=o.next()).done;)a.push(i.value)}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return a}function h(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(u(arguments[t]));return e}(o=e.ViewportDataMatchStrategy||(e.ViewportDataMatchStrategy={}))[o.exact=0]="exact",o[o.smaller=1]="smaller",o[o.larger=2]="larger",o[o.closestSmallerFirst=3]="closestSmallerFirst",o[o.closestLargerFirst=4]="closestLargerFirst";var l=((n={})[e.ViewportDataMatchStrategy.exact]=function(e,t){return e[t.name]},n[e.ViewportDataMatchStrategy.larger]=function(e,t,r){var i=e[t.name];if(void 0!==i)return i;var n=r[r.length-1].type;if(t.type>=n)return;for(var o=t.type;o<r.length;o++){var a=r[o];if(void 0!==(i=e[a.name]))return i}return},n[e.ViewportDataMatchStrategy.smaller]=function(e,t,r){var i=e[t.name];if(void 0!==i)return i;if(t.type<=0)return;for(var n=t.type;n<r.length;n--){var o=r[n];if(void 0!==(i=e[o.name]))return i}return},n[e.ViewportDataMatchStrategy.closestSmallerFirst]=function(e,t,r){return f(e,t,r,!0)},n[e.ViewportDataMatchStrategy.closestLargerFirst]=function(e,t,r){return f(e,t,r,!1)},n);function f(e,t,r,i){var n,o,a=e[t.name];if(void 0!==a)return a;for(var s=t.type,p=t.type,u=0;u<r.length;u++)try{for(var h=(n=void 0,c(i?[--s,++p]:[++p,--s])),l=h.next();!l.done;l=h.next()){var f=r[l.value];if(f&&void 0!==(a=e[f.name]))return a}}catch(e){n={error:e}}finally{try{l&&!l.done&&(o=h.return)&&o.call(h)}finally{if(n)throw n.error}}}var d,v,y,w,m={xsmall:450,small:767,medium:992,large:1200,xlarge:1500,xxlarge:1920,xxlarge1:2100},g={resizePollingSpeed:33,breakpoints:m,defaultDataMatchStrategy:e.ViewportDataMatchStrategy.smaller},x={viewport:g},b=new t.InjectionToken("@ssv/ngx.ux-config"),T=new t.InjectionToken("Window"),_=function(){function e(e){this.window=e}return Object.defineProperty(e.prototype,"native",{get:function(){return this.window},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasNative",{get:function(){return!!this.native.window},enumerable:!0,configurable:!0}),e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[T]}]}]},e.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(T))},token:e,providedIn:"root"}),e=s([t.Injectable({providedIn:"root"}),p(0,t.Inject(T))],e)}();(d=e.ViewportSizeType||(e.ViewportSizeType={}))[d.xsmall=0]="xsmall",d[d.small=1]="small",d[d.medium=2]="medium",d[d.large=3]="large",d[d.xlarge=4]="xlarge",d[d.xxlarge=5]="xxlarge",d[d.xxlarge1=6]="xxlarge1",(v=e.ComparisonOperation||(e.ComparisonOperation={})).equals="=",v.notEquals="<>",v.lessThan="<",v.lessOrEqualThan="<=",v.greaterThan=">",v.greaterOrEqualThan=">=",(y=e.DeviceType||(e.DeviceType={})).desktop="desktop",y.mobile="mobile",y.tablet="tablet";var V,z=((w={})[e.DeviceType.desktop]={width:1366,height:768},w[e.DeviceType.tablet]={width:768,height:1024},w[e.DeviceType.mobile]={width:414,height:736},w),S=new t.InjectionToken("@ssv/ngx.ux-config/viewport/ssr-device"),j=function(){function r(e){this.deviceType=e}return r.prototype.get=function(){return z[this.deviceType]||z[e.DeviceType.desktop]},r.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Optional},{type:t.Inject,args:[S]}]}]},r.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new r(t.ɵɵinject(S,8))},token:r,providedIn:"root"}),r=s([t.Injectable({providedIn:"root"}),p(0,t.Optional()),p(0,t.Inject(S))],r)}();function O(e){if("object"!=typeof e||!e)return!1;var t=e;return!(!t.size||!t.operation)}function R(e){if(!e)return!1;if(Array.isArray(e)&&2===e.length){var t=u(e,1)[0];return M.includes(t)}return!1}var M=Object.values(e.ComparisonOperation),I=((V={})[e.ComparisonOperation.equals]=function(e,t){return e===t},V[e.ComparisonOperation.notEquals]=function(e,t){return e!==t},V[e.ComparisonOperation.lessThan]=function(e,t){return e<t},V[e.ComparisonOperation.lessOrEqualThan]=function(e,t){return e<=t},V[e.ComparisonOperation.greaterThan]=function(e,t){return e>t},V[e.ComparisonOperation.greaterOrEqualThan]=function(e,t){return e>=t},V);function C(e,t,r){var i,n,o=D(t.sizeTypeExclude,e.name,!1);if(!o&&t.expression){var a=r[t.expression.size];if(!a)throw new Error("Viewport size type is invalid. Size type: '"+t.expression.size+"'");n=(0,I[t.expression.operation])(e.type,a.type)}else i=D(t.sizeType,e.name,!0);return!!((n||i)&&!o)}function D(e,t,r){return e?Array.isArray(e)?e.includes(t):e===t:r}function $(e,t){for(var r=t.length-1,i=0;i<r;i++){var n=t[i];if(e<=n.widthThreshold)return n}return t[r]}function E(e){return Object.entries(e).sort((function(e,t){return u(e,2)[1]-u(t,2)[1]}))}var P,k=function(){function e(e,t,n){var o,a=this;this.windowRef=e,this.viewportServerSize=t,this._sizeTypes=E(n.viewport.breakpoints).map((function(e,t){var r=u(e,2),i=r[0],n=r[1];return Object.freeze({name:i,type:t,widthThreshold:n})})),this._sizeTypeMap=(o=this._sizeTypes,Object.freeze(o.reduce((function(e,t){return e[t.name]=t,e[t.type]=t,e}),{}))),e.hasNative?this.resize$=i.fromEvent(window,"resize").pipe(r.map((function(){return a.getViewportSize()})),r.auditTime(n.viewport.resizePollingSpeed),r.share()):this.resize$=i.of(t.get());var s=this.getViewportSize();this._sizeTypeSnapshot=$(s.width,this.sizeTypes),this.size$=this.resize$.pipe(r.startWith(s),r.distinctUntilChanged((function(e,t){return e.width===t.width&&e.height===t.height})),r.shareReplay(1)),this.sizeType$=this.size$.pipe(r.distinctUntilChanged((function(e,t){return e.width===t.width})),r.map((function(e){return $(e.width,a.sizeTypes)})),r.distinctUntilChanged(),r.tap((function(e){return a._sizeTypeSnapshot=e})),r.shareReplay(1))}return Object.defineProperty(e.prototype,"sizeTypeSnapshot",{get:function(){return this._sizeTypeSnapshot},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sizeTypeMap",{get:function(){return this._sizeTypeMap},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sizeTypes",{get:function(){return this._sizeTypes},enumerable:!0,configurable:!0}),e.prototype.calculateItemsPerRow=function(e,t){return 0===e?0:(e||this.windowRef.hasNative||(e=this.viewportServerSize.get().width),e/t)},e.prototype.getViewportSize=function(){if(!this.windowRef.hasNative)return this.viewportServerSize.get();var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("safari")&&-1===e.indexOf("chrome")?{width:this.windowRef.native.document.documentElement.clientWidth,height:this.windowRef.native.document.documentElement.clientHeight}:{width:this.windowRef.native.innerWidth,height:this.windowRef.native.innerHeight}},e.ctorParameters=function(){return[{type:_},{type:j},{type:void 0,decorators:[{type:t.Inject,args:[b]}]}]},e.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(_),t.ɵɵinject(j),t.ɵɵinject(b))},token:e,providedIn:"root"}),e=s([t.Injectable({providedIn:"root"}),p(2,t.Inject(b))],e)}();var F=((P={})[e.ViewportDataMatchStrategy.exact]=function(e,t,r,i,n){e.max=t.widthThreshold,n&&(e.min=n.widthThreshold+1)},P[e.ViewportDataMatchStrategy.smaller]=function(e,t,r,i,n){r&&(e.max=t.widthThreshold),n&&(e.min=n.widthThreshold+1)},P[e.ViewportDataMatchStrategy.larger]=function(e,t,r,i){t&&(e.max=t.widthThreshold),i&&(e.min=i.widthThreshold+1)},P[e.ViewportDataMatchStrategy.closestSmallerFirst]=function(e,t,r,i,n,o,a){r&&(e.max=N(r,t,a,!0)),(null==o?void 0:o.max)&&(e.min=o.max+1)},P[e.ViewportDataMatchStrategy.closestLargerFirst]=function(e,t,r,i,n,o,a){r&&(e.max=N(r,t,a,!1)),(null==o?void 0:o.max)&&(e.min=o.max+1)},P);function N(e,t,r,i){var n=(i?Math.ceil:Math.floor)((e.type-t.type-1)/2);return(r[t.type+n]||t).widthThreshold}var A=function(){function e(e,t){this.viewport=e,this.config=t}return e.prototype.get=function(e,t,r){return void 0===t&&(t=this.config.viewport.defaultDataMatchStrategy),void 0===r&&(r=this.viewport.sizeTypeSnapshot),function(e,t,r,i,n){var o=l[r];if(!o)throw Error("matchViewportData: Viewport Data strategy not implemented. Strategy: '"+r+"'");var a=o(e,t,i,n);return void 0!==a?a:e.default}(e,r,t,this.viewport.sizeTypes,this.viewport.sizeTypeMap)},e.prototype.get$=function(e,t){var i=this;return this.viewport.sizeType$.pipe(r.map((function(r){return i.get(e,t,r)})),r.distinctUntilChanged())},e.prototype.generateRules=function(e,t){return void 0===t&&(t=this.config.viewport.defaultDataMatchStrategy),function(e,t,r,i){var n=F[t];if(!n)throw Error("generateViewportRulesRangeFromDataMatcher: Viewport Data strategy not implemented. Strategy: '"+t+"'");var o=[];for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){if(void 0===e[a])continue;var s=i[a];s&&o.push(s)}o=o.sort((function(e,t){return e.type-t.type}));var p,c=[];e.default&&c.push({value:e.default,min:void 0,max:void 0});for(var u=0;u<o.length;u++){var h=o[u-1],l=o[u+1],f=o[u],d=r[f.type-1],v={value:e[f.name],min:void 0,max:void 0};n(v,f,l,h,d,p,r),p=v,c.push(v)}return c}(e,t,this.viewport.sizeTypes,this.viewport.sizeTypeMap)},e.ctorParameters=function(){return[{type:k},{type:void 0,decorators:[{type:t.Inject,args:[b]}]}]},e.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(k),t.ɵɵinject(b))},token:e,providedIn:"root"}),e=s([t.Injectable({providedIn:"root"}),p(1,t.Inject(b))],e)}(),U=function(){function n(e,t){this.viewportData=e,this.cdr=t,this.markForTransform=!0,this.data$$=i.Subscription.EMPTY}return n.prototype.transform=function(t,i){var n=this;return this.markForTransform||t!==this.data||i!==this.strategy?(this.data=t,this.strategy=i,this.data$$.unsubscribe(),this.data$$=this.viewportData.get$(t,e.ViewportDataMatchStrategy[i]).pipe(r.tap((function(e){n.markForTransform=!0,n.value=e,n.cdr.markForCheck()}))).subscribe(),this.markForTransform=!1,this.value):this.value},n.prototype.ngOnDestroy=function(){this.data$$.unsubscribe()},n.ctorParameters=function(){return[{type:A},{type:t.ChangeDetectorRef}]},n=s([t.Pipe({name:"ssvViewportData",pure:!1})],n)}(),q=function(e){void 0===e&&(e=!1),this.$implicit=e},L=function(){function e(e,t,r){this.viewport=e,this.viewContainer=t,this.templateRef=r,this._matchConditions={},this._context=new q,this._destroy$=new i.Subject,this._update$=new i.ReplaySubject(1)}return Object.defineProperty(e.prototype,"condition",{set:function(e){if(O(e))this._matchConditions.expression=e;else if(R(e)){var t=u(e,2),r=t[0],i=t[1];this._matchConditions.expression={operation:r,size:i}}else this._matchConditions.sizeType=e;this._update$.next()},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this;this.updateView(),i.combineLatest([this.viewport.sizeType$,this._update$]).pipe(r.map((function(t){return C(u(t,1)[0],e._matchConditions,e.viewport.sizeTypeMap)})),r.tap((function(t){return e._context.$implicit=t})),r.tap((function(){return e._viewRef.markForCheck()})),r.takeUntil(this._destroy$)).subscribe()},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.prototype.updateView=function(){this.viewContainer.clear(),this._viewRef=this.viewContainer.createEmbeddedView(this.templateRef,this._context)},e.ctorParameters=function(){return[{type:k},{type:t.ViewContainerRef},{type:t.TemplateRef}]},s([t.Input("ssvViewportMatcherVarWhen")],e.prototype,"condition",null),e=s([t.Directive({selector:"[ssvViewportMatcherVar]"})],e)}(),W=function(){this.sizeType=null,this.sizeTypeExclude=null},G=function(){function e(e,t,r,n,o){this.viewport=e,this.renderer=t,this.viewContainer=r,this.cdr=n,this._context=new W,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this.sizeType$$=i.Subscription.EMPTY,this.cssClass$$=i.Subscription.EMPTY,this._update$=new i.Subject,this._thenTemplateRef=o}return Object.defineProperty(e.prototype,"ssvViewportMatcher",{set:function(e){if(O(e))this._context.expression=e;else if(R(e)){var t=u(e,2),r=t[0],i=t[1];this._context.expression={operation:r,size:i}}else this._context.sizeType=e;this.sizeInfo&&this._update$.next(this._context)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ssvViewportMatcherExclude",{set:function(e){this._context.sizeTypeExclude=e,this.sizeInfo&&this._update$.next(this._context)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ssvViewportMatcherElse",{set:function(e){this._elseTemplateRef=e,this._elseViewRef=null,this.sizeInfo&&this._update$.next(this._context)},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this;this._update$.pipe(r.filter((function(){return!!e.sizeInfo})),r.tap((function(){return e._updateView(e.sizeInfo)})),r.tap((function(){return e.cdr.markForCheck()}))).subscribe(),this.sizeType$$=this.viewport.sizeType$.pipe(r.tap((function(t){return e.sizeInfo=t})),r.tap((function(){return e._update$.next(e._context)}))).subscribe(),this.cssClass$$=this.viewport.sizeType$.pipe(r.startWith(void 0),r.filter((function(){return!(!e._thenViewRef&&!e._elseViewRef)})),r.pairwise(),r.tap((function(t){var r,i=u(t,2),n=i[0],o=i[1],a=e._thenViewRef?e._thenViewRef.rootNodes[0]:null===(r=e._elseViewRef)||void 0===r?void 0:r.rootNodes[0];a.classList&&(n&&e.renderer.removeClass(a,"ssv-vp-size--"+n.name),e.renderer.addClass(a,"ssv-vp-size--"+(null==o?void 0:o.name)))}))).subscribe()},e.prototype.ngOnDestroy=function(){this.cssClass$$.unsubscribe(),this.sizeType$$.unsubscribe(),this._update$.complete()},e.prototype._updateView=function(e){C(e,this._context,this.viewport.sizeTypeMap)?this._thenViewRef||(this.viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this.viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this.viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this.viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))},e.ctorParameters=function(){return[{type:k},{type:t.Renderer2},{type:t.ViewContainerRef},{type:t.ChangeDetectorRef},{type:t.TemplateRef}]},s([t.Input()],e.prototype,"ssvViewportMatcher",null),s([t.Input()],e.prototype,"ssvViewportMatcherExclude",null),s([t.Input()],e.prototype,"ssvViewportMatcherElse",null),e=s([t.Directive({selector:"[ssvViewportMatcher]",exportAs:"ssvViewportMatcher"})],e)}(),X=new t.InjectionToken("@ssv/ngx.ux/configData"),Y=[G,L,U],H=function(){function e(){}var r;return r=e,e.forRoot=function(e){return{ngModule:r,providers:[{provide:X,useValue:e}]}},e=r=s([t.NgModule({declarations:[Y],providers:[{provide:b,useFactory:B,deps:[[X,new t.Optional]]},{provide:T,useFactory:K}],exports:h(Y)})],e)}();function B(e){if(!e)return x;var t="function"==typeof e?e():e;return{viewport:a(a({},x.viewport),t.viewport)}}function K(){return"undefined"!=typeof window?window:{}}e.COMPARISON_OPERATION_FUNC_MAPPING=I,e.MODULE_CONFIG_DATA=X,e.SsvUxModule=H,e.SsvViewportMatcherContext=W,e.SsvViewportMatcherDirective=G,e.SsvViewportMatcherVarContext=q,e.SsvViewportMatcherVarDirective=L,e.UX_CONFIG=b,e.UX_DEFAULT_CONFIG=x,e.UX_VIEWPORT_DEFAULT_BREAKPOINTS=m,e.UX_VIEWPORT_SSR_DEVICE=S,e.VERSION="1.4.0",e.ViewportDataPipe=U,e.ViewportDataService=A,e.ViewportServerSizeService=j,e.ViewportService=k,e._moduleConfigFactory=B,e._window=K,e.generateViewportSizeType=function(e){return Object.freeze(E(e).reduce((function(e,t,r){var i=u(t,1)[0];return e[i]=r,e[r]=i,e}),{}))},e.isViewportSizeMatcherExpression=O,e.isViewportSizeMatcherTupleExpression=R,e.ɵa=g,e.ɵb=T,e.ɵc=_,Object.defineProperty(e,"__esModule",{value:!0})}));
15
+ ***************************************************************************** */var n,o,a=function(){return(a=Object.assign||function(e){for(var t,r=1,i=arguments.length;r<i;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function s(e,t,r,i){var n,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,i);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(a=(o<3?n(a):o>3?n(t,r,a):n(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a}function p(e,t){return function(r,i){t(r,i,e)}}function c(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function u(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var i,n,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(i=o.next()).done;)a.push(i.value)}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return a}function h(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(u(arguments[t]));return e}(o=e.ViewportDataMatchStrategy||(e.ViewportDataMatchStrategy={}))[o.exact=0]="exact",o[o.smaller=1]="smaller",o[o.larger=2]="larger",o[o.closestSmallerFirst=3]="closestSmallerFirst",o[o.closestLargerFirst=4]="closestLargerFirst";var l=((n={})[e.ViewportDataMatchStrategy.exact]=function(e,t){return e[t.name]},n[e.ViewportDataMatchStrategy.larger]=function(e,t,r){var i=e[t.name];if(void 0!==i)return i;var n=r[r.length-1].type;if(t.type>=n)return;for(var o=t.type;o<r.length;o++){var a=r[o];if(void 0!==(i=e[a.name]))return i}return},n[e.ViewportDataMatchStrategy.smaller]=function(e,t,r){var i=e[t.name];if(void 0!==i)return i;if(t.type<=0)return;for(var n=t.type;n<r.length;n--){var o=r[n];if(void 0!==(i=e[o.name]))return i}return},n[e.ViewportDataMatchStrategy.closestSmallerFirst]=function(e,t,r){return f(e,t,r,!0)},n[e.ViewportDataMatchStrategy.closestLargerFirst]=function(e,t,r){return f(e,t,r,!1)},n);function f(e,t,r,i){var n,o,a=e[t.name];if(void 0!==a)return a;for(var s=t.type,p=t.type,u=0;u<r.length;u++)try{for(var h=(n=void 0,c(i?[--s,++p]:[++p,--s])),l=h.next();!l.done;l=h.next()){var f=r[l.value];if(f&&void 0!==(a=e[f.name]))return a}}catch(e){n={error:e}}finally{try{l&&!l.done&&(o=h.return)&&o.call(h)}finally{if(n)throw n.error}}}var d,v,y,w,m={xsmall:450,small:767,medium:992,large:1200,xlarge:1500,xxlarge:1920,xxlarge1:2100},g={resizePollingSpeed:33,breakpoints:m,defaultDataMatchStrategy:e.ViewportDataMatchStrategy.smaller},x={viewport:g},T=new t.InjectionToken("@ssv/ngx.ux-config"),b=new t.InjectionToken("Window"),_=function(){function e(e){this.window=e}return Object.defineProperty(e.prototype,"native",{get:function(){return this.window},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasNative",{get:function(){return!!this.native.window},enumerable:!0,configurable:!0}),e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[b]}]}]},e.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(b))},token:e,providedIn:"root"}),e=s([t.Injectable({providedIn:"root"}),p(0,t.Inject(b))],e)}();(d=e.ViewportSizeType||(e.ViewportSizeType={}))[d.xsmall=0]="xsmall",d[d.small=1]="small",d[d.medium=2]="medium",d[d.large=3]="large",d[d.xlarge=4]="xlarge",d[d.xxlarge=5]="xxlarge",d[d.xxlarge1=6]="xxlarge1",(v=e.ComparisonOperation||(e.ComparisonOperation={})).equals="=",v.notEquals="<>",v.lessThan="<",v.lessOrEqualThan="<=",v.greaterThan=">",v.greaterOrEqualThan=">=",(y=e.DeviceType||(e.DeviceType={})).desktop="desktop",y.mobile="mobile",y.tablet="tablet";var z,S=((w={})[e.DeviceType.desktop]={width:1366,height:768},w[e.DeviceType.tablet]={width:768,height:1024},w[e.DeviceType.mobile]={width:414,height:736},w),V=new t.InjectionToken("@ssv/ngx.ux-config/viewport/ssr-device"),j=function(){function r(e){this.deviceType=e}return r.prototype.get=function(){return S[this.deviceType]||S[e.DeviceType.desktop]},r.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Optional},{type:t.Inject,args:[V]}]}]},r.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new r(t.ɵɵinject(V,8))},token:r,providedIn:"root"}),r=s([t.Injectable({providedIn:"root"}),p(0,t.Optional()),p(0,t.Inject(V))],r)}();function O(e){if("object"!=typeof e||!e)return!1;var t=e;return!(!t.size||!t.operation)}function R(e){if(!e)return!1;if(Array.isArray(e)&&2===e.length){var t=u(e,1)[0];return $.includes(t)}return!1}var $=Object.values(e.ComparisonOperation),M=((z={})[e.ComparisonOperation.equals]=function(e,t){return e===t},z[e.ComparisonOperation.notEquals]=function(e,t){return e!==t},z[e.ComparisonOperation.lessThan]=function(e,t){return e<t},z[e.ComparisonOperation.lessOrEqualThan]=function(e,t){return e<=t},z[e.ComparisonOperation.greaterThan]=function(e,t){return e>t},z[e.ComparisonOperation.greaterOrEqualThan]=function(e,t){return e>=t},z);function I(e,t,r){var i,n,o=C(t.sizeTypeExclude,e.name,!1);if(!o&&t.expression){var a=r[t.expression.size];if(!a)throw new Error("Viewport size type is invalid. Size type: '"+t.expression.size+"'");n=(0,M[t.expression.operation])(e.type,a.type)}else i=C(t.sizeType,e.name,!0);return!!((n||i)&&!o)}function C(e,t,r){return e?Array.isArray(e)?e.includes(t):e===t:r}function D(e,t){for(var r=t.length-1,i=0;i<r;i++){var n=t[i];if(e<=n.widthThreshold)return n}return t[r]}function E(e){return Object.entries(e).sort((function(e,t){return u(e,2)[1]-u(t,2)[1]}))}var P,k=function(){function e(e,t,n){var o,a=this;this.windowRef=e,this.viewportServerSize=t,this._sizeTypes=E(n.viewport.breakpoints).map((function(e,t){var r=u(e,2),i=r[0],n=r[1];return Object.freeze({name:i,type:t,widthThreshold:n})})),this._sizeTypeMap=(o=this._sizeTypes,Object.freeze(o.reduce((function(e,t){return e[t.name]=t,e[t.type]=t,e}),{}))),e.hasNative?(this.resizeSnap$=i.fromEvent(window,"resize").pipe(r.map((function(){return a.getViewportSize()})),r.share()),this.resize$=this.resizeSnap$.pipe(r.auditTime(n.viewport.resizePollingSpeed),r.share())):this.resizeSnap$=this.resize$=i.of(t.get());var s=this.getViewportSize();this._sizeTypeSnapshot=D(s.width,this.sizeTypes);var p=function(e){return e.pipe(r.startWith(s),r.distinctUntilChanged((function(e,t){return e.width===t.width&&e.height===t.height})),r.shareReplay(1))};this.sizeSnap$=p(this.resizeSnap$),this.size$=p(this.resize$);var c=function(e){return e.pipe(r.distinctUntilChanged((function(e,t){return e.width===t.width})),r.map((function(e){return D(e.width,a.sizeTypes)})),r.distinctUntilChanged(),r.tap((function(e){return a._sizeTypeSnapshot=e})),r.shareReplay(1))};this.sizeType$=c(this.size$),this.sizeTypeSnap$=c(this.sizeSnap$)}return Object.defineProperty(e.prototype,"sizeTypeSnapshot",{get:function(){return this._sizeTypeSnapshot},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sizeTypeMap",{get:function(){return this._sizeTypeMap},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sizeTypes",{get:function(){return this._sizeTypes},enumerable:!0,configurable:!0}),e.prototype.calculateItemsPerRow=function(e,t){return 0===e?0:(e||this.windowRef.hasNative||(e=this.viewportServerSize.get().width),e/t)},e.prototype.getViewportSize=function(){if(!this.windowRef.hasNative)return this.viewportServerSize.get();var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("safari")&&-1===e.indexOf("chrome")?{width:this.windowRef.native.document.documentElement.clientWidth,height:this.windowRef.native.document.documentElement.clientHeight}:{width:this.windowRef.native.innerWidth,height:this.windowRef.native.innerHeight}},e.ctorParameters=function(){return[{type:_},{type:j},{type:void 0,decorators:[{type:t.Inject,args:[T]}]}]},e.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(_),t.ɵɵinject(j),t.ɵɵinject(T))},token:e,providedIn:"root"}),e=s([t.Injectable({providedIn:"root"}),p(2,t.Inject(T))],e)}();var F=((P={})[e.ViewportDataMatchStrategy.exact]=function(e,t,r,i,n){e.max=t.widthThreshold,n&&(e.min=n.widthThreshold+1)},P[e.ViewportDataMatchStrategy.smaller]=function(e,t,r,i,n){r&&(e.max=t.widthThreshold),n&&(e.min=n.widthThreshold+1)},P[e.ViewportDataMatchStrategy.larger]=function(e,t,r,i){t&&(e.max=t.widthThreshold),i&&(e.min=i.widthThreshold+1)},P[e.ViewportDataMatchStrategy.closestSmallerFirst]=function(e,t,r,i,n,o,a){r&&(e.max=N(r,t,a,!0)),(null==o?void 0:o.max)&&(e.min=o.max+1)},P[e.ViewportDataMatchStrategy.closestLargerFirst]=function(e,t,r,i,n,o,a){r&&(e.max=N(r,t,a,!1)),(null==o?void 0:o.max)&&(e.min=o.max+1)},P);function N(e,t,r,i){var n=(i?Math.ceil:Math.floor)((e.type-t.type-1)/2);return(r[t.type+n]||t).widthThreshold}var A=function(){function e(e,t){this.viewport=e,this.config=t}return e.prototype.get=function(e,t,r){return void 0===t&&(t=this.config.viewport.defaultDataMatchStrategy),void 0===r&&(r=this.viewport.sizeTypeSnapshot),function(e,t,r,i,n){var o=l[r];if(!o)throw Error("matchViewportData: Viewport Data strategy not implemented. Strategy: '"+r+"'");var a=o(e,t,i,n);return void 0!==a?a:e.default}(e,r,t,this.viewport.sizeTypes,this.viewport.sizeTypeMap)},e.prototype.get$=function(e,t,i){var n=this;return void 0===i&&(i=!0),(i?this.viewport.sizeType$:this.viewport.sizeTypeSnap$).pipe(r.map((function(r){return n.get(e,t,r)})),r.distinctUntilChanged())},e.prototype.generateRules=function(e,t){return void 0===t&&(t=this.config.viewport.defaultDataMatchStrategy),function(e,t,r,i){var n=F[t];if(!n)throw Error("generateViewportRulesRangeFromDataMatcher: Viewport Data strategy not implemented. Strategy: '"+t+"'");var o=[];for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){if(void 0===e[a])continue;var s=i[a];s&&o.push(s)}o=o.sort((function(e,t){return e.type-t.type}));var p,c=[];e.default&&c.push({value:e.default,min:void 0,max:void 0});for(var u=0;u<o.length;u++){var h=o[u-1],l=o[u+1],f=o[u],d=r[f.type-1],v={value:e[f.name],min:void 0,max:void 0};n(v,f,l,h,d,p,r),p=v,c.push(v)}return c}(e,t,this.viewport.sizeTypes,this.viewport.sizeTypeMap)},e.ctorParameters=function(){return[{type:k},{type:void 0,decorators:[{type:t.Inject,args:[T]}]}]},e.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(k),t.ɵɵinject(T))},token:e,providedIn:"root"}),e=s([t.Injectable({providedIn:"root"}),p(1,t.Inject(T))],e)}(),U=function(){function n(e,t){this.viewportData=e,this.cdr=t,this.markForTransform=!0,this.data$$=i.Subscription.EMPTY}return n.prototype.transform=function(t,i){var n=this;return this.markForTransform||t!==this.data||i!==this.strategy?(this.data=t,this.strategy=i,this.data$$.unsubscribe(),this.data$$=this.viewportData.get$(t,e.ViewportDataMatchStrategy[i]).pipe(r.tap((function(e){n.markForTransform=!0,n.value=e,n.cdr.markForCheck()}))).subscribe(),this.markForTransform=!1,this.value):this.value},n.prototype.ngOnDestroy=function(){this.data$$.unsubscribe()},n.ctorParameters=function(){return[{type:A},{type:t.ChangeDetectorRef}]},n=s([t.Pipe({name:"ssvViewportData",pure:!1})],n)}(),q=function(e){void 0===e&&(e=!1),this.$implicit=e},L=function(){function e(e,t,r){this.viewport=e,this.viewContainer=t,this.templateRef=r,this._matchConditions={},this._context=new q,this._destroy$=new i.Subject,this._update$=new i.ReplaySubject(1)}return Object.defineProperty(e.prototype,"condition",{set:function(e){if(O(e))this._matchConditions.expression=e;else if(R(e)){var t=u(e,2),r=t[0],i=t[1];this._matchConditions.expression={operation:r,size:i}}else this._matchConditions.sizeType=e;this._update$.next()},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this;this.updateView(),i.combineLatest([this.viewport.sizeType$,this._update$]).pipe(r.map((function(t){return I(u(t,1)[0],e._matchConditions,e.viewport.sizeTypeMap)})),r.tap((function(t){return e._context.$implicit=t})),r.tap((function(){return e._viewRef.markForCheck()})),r.takeUntil(this._destroy$)).subscribe()},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.prototype.updateView=function(){this.viewContainer.clear(),this._viewRef=this.viewContainer.createEmbeddedView(this.templateRef,this._context)},e.ctorParameters=function(){return[{type:k},{type:t.ViewContainerRef},{type:t.TemplateRef}]},s([t.Input("ssvViewportMatcherVarWhen")],e.prototype,"condition",null),e=s([t.Directive({selector:"[ssvViewportMatcherVar]"})],e)}(),W=function(){this.sizeType=null,this.sizeTypeExclude=null},G=function(){function e(e,t,r,n,o){this.viewport=e,this.renderer=t,this.viewContainer=r,this.cdr=n,this._context=new W,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this.sizeType$$=i.Subscription.EMPTY,this.cssClass$$=i.Subscription.EMPTY,this._update$=new i.Subject,this._thenTemplateRef=o}return Object.defineProperty(e.prototype,"ssvViewportMatcher",{set:function(e){if(O(e))this._context.expression=e;else if(R(e)){var t=u(e,2),r=t[0],i=t[1];this._context.expression={operation:r,size:i}}else this._context.sizeType=e;this.sizeInfo&&this._update$.next(this._context)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ssvViewportMatcherExclude",{set:function(e){this._context.sizeTypeExclude=e,this.sizeInfo&&this._update$.next(this._context)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ssvViewportMatcherElse",{set:function(e){this._elseTemplateRef=e,this._elseViewRef=null,this.sizeInfo&&this._update$.next(this._context)},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this;this._update$.pipe(r.filter((function(){return!!e.sizeInfo})),r.tap((function(){return e._updateView(e.sizeInfo)})),r.tap((function(){return e.cdr.markForCheck()}))).subscribe(),this.sizeType$$=this.viewport.sizeType$.pipe(r.tap((function(t){return e.sizeInfo=t})),r.tap((function(){return e._update$.next(e._context)}))).subscribe(),this.cssClass$$=this.viewport.sizeType$.pipe(r.startWith(void 0),r.filter((function(){return!(!e._thenViewRef&&!e._elseViewRef)})),r.pairwise(),r.tap((function(t){var r,i=u(t,2),n=i[0],o=i[1],a=e._thenViewRef?e._thenViewRef.rootNodes[0]:null===(r=e._elseViewRef)||void 0===r?void 0:r.rootNodes[0];a.classList&&(n&&e.renderer.removeClass(a,"ssv-vp-size--"+n.name),e.renderer.addClass(a,"ssv-vp-size--"+(null==o?void 0:o.name)))}))).subscribe()},e.prototype.ngOnDestroy=function(){this.cssClass$$.unsubscribe(),this.sizeType$$.unsubscribe(),this._update$.complete()},e.prototype._updateView=function(e){I(e,this._context,this.viewport.sizeTypeMap)?this._thenViewRef||(this.viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this.viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this.viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this.viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))},e.ctorParameters=function(){return[{type:k},{type:t.Renderer2},{type:t.ViewContainerRef},{type:t.ChangeDetectorRef},{type:t.TemplateRef}]},s([t.Input()],e.prototype,"ssvViewportMatcher",null),s([t.Input()],e.prototype,"ssvViewportMatcherExclude",null),s([t.Input()],e.prototype,"ssvViewportMatcherElse",null),e=s([t.Directive({selector:"[ssvViewportMatcher]",exportAs:"ssvViewportMatcher"})],e)}(),X=new t.InjectionToken("@ssv/ngx.ux/configData"),Y=[G,L,U],H=function(){function e(){}var r;return r=e,e.forRoot=function(e){return{ngModule:r,providers:[{provide:X,useValue:e}]}},e=r=s([t.NgModule({declarations:[Y],providers:[{provide:T,useFactory:B,deps:[[X,new t.Optional]]},{provide:b,useFactory:K}],exports:h(Y)})],e)}();function B(e){if(!e)return x;var t="function"==typeof e?e():e;return{viewport:a(a({},x.viewport),t.viewport)}}function K(){return"undefined"!=typeof window?window:{}}e.COMPARISON_OPERATION_FUNC_MAPPING=M,e.MODULE_CONFIG_DATA=X,e.SsvUxModule=H,e.SsvViewportMatcherContext=W,e.SsvViewportMatcherDirective=G,e.SsvViewportMatcherVarContext=q,e.SsvViewportMatcherVarDirective=L,e.UX_CONFIG=T,e.UX_DEFAULT_CONFIG=x,e.UX_VIEWPORT_DEFAULT_BREAKPOINTS=m,e.UX_VIEWPORT_SSR_DEVICE=V,e.VERSION="1.4.1",e.ViewportDataPipe=U,e.ViewportDataService=A,e.ViewportServerSizeService=j,e.ViewportService=k,e._moduleConfigFactory=B,e._window=K,e.generateViewportSizeType=function(e){return Object.freeze(E(e).reduce((function(e,t,r){var i=u(t,1)[0];return e[i]=r,e[r]=i,e}),{}))},e.isViewportSizeMatcherExpression=O,e.isViewportSizeMatcherTupleExpression=R,e.ɵa=g,e.ɵb=b,e.ɵc=_,Object.defineProperty(e,"__esModule",{value:!0})}));
16
16
  //# sourceMappingURL=ssv-ngx.ux.umd.min.js.map