Socket
Socket
Sign inDemoInstall

@ssv/ngx.ux

Package Overview
Dependencies
Maintainers
1
Versions
44
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ssv/ngx.ux - npm Package Compare versions

Comparing version 1.1.1 to 1.2.0-dev102

CHANGELOG.md

867

bundles/ssv-ngx.ux.umd.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('lodash'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define('@ssv/ngx.ux', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', 'lodash', '@angular/common'], factory) :
(global = global || self, factory((global.ssv = global.ssv || {}, global.ssv.ngx = global.ssv.ngx || {}, global.ssv.ngx.ux = {}), global.ng.core, global.rxjs, global.rxjs.operators, global._, global.ng.common));
}(this, function (exports, core, rxjs, operators, lodash, common) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators')) :
typeof define === 'function' && define.amd ? define('@ssv/ngx.ux', ['exports', '@angular/core', 'rxjs', 'rxjs/operators'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ssv = global.ssv || {}, global.ssv.ngx = global.ssv.ngx || {}, global.ssv.ngx.ux = {}), global.ng.core, global.rxjs, global.rxjs.operators));
}(this, (function (exports, i0, rxjs, operators) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Copyright (c) Microsoft Corporation.
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function () {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __rest(s, e) {
var t = {};
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
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;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
return function (target, key) { decorator(target, key, paramIndex); };
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try {
step(generator.next(value));
}
catch (e) {
reject(e);
} }
function rejected(value) { try {
step(generator["throw"](value));
}
catch (e) {
reject(e);
} }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function () { if (t[0] & 1)
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f)
throw new TypeError("Generator is already executing.");
while (_)
try {
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;
if (y = 0, t)
op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return { value: op[1], done: false };
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2])
_.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
}
catch (e) {
op = [6, e];
y = 0;
}
finally {
f = t = 0;
}
if (op[0] & 5)
throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
function __createBinding(o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
}
function __exportStar(m, exports) {
for (var p in m)
if (p !== "default" && !exports.hasOwnProperty(p))
exports[p] = m[p];
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m)
return m.call(o);
if (o && typeof o.length === "number")
return {
next: function () {
if (o && i >= o.length)
o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) { e = { error: error }; }
catch (error) {
e = { error: error };
}
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally { if (e) throw e.error; }
finally {
if (e)
throw e.error;
}
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
}
;
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
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); }); }; }
function resume(n, v) { try {
step(g[n](v));
}
catch (e) {
settle(q[0][3], e);
} }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length)
resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
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; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
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);
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); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) {
Object.defineProperty(cooked, "raw", { value: raw });
}
else {
cooked.raw = raw;
}
return cooked;
}
;
function __importStar(mod) {
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (Object.hasOwnProperty.call(mod, k))
result[k] = mod[k];
result.default = mod;
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
}
function __classPrivateFieldSet(receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
}
/** Default viewport breakpoints. */
var UX_VIEWPORT_DEFAULT_BREAKPOINTS = {
xsmall: 450,
small: 767,
medium: 992,
large: 1200,
xlarge: 1500,
xxlarge: 1920,
xxlarge1: 2100,
};
var UX_VIEWPORT_DEFAULT_CONFIG = {
resizePollingSpeed: 33,
breakpoints: UX_VIEWPORT_DEFAULT_BREAKPOINTS
};
var UX_DEFAULT_CONFIG = {
viewport: {
resizePollingSpeed: 33,
}
viewport: UX_VIEWPORT_DEFAULT_CONFIG,
};
var UX_CONFIG = new core.InjectionToken("@ssv/ngx.ux-config");
var UX_CONFIG = new i0.InjectionToken("@ssv/ngx.ux-config");
var WINDOW = new i0.InjectionToken("Window");
var WindowRef = /** @class */ (function () {
function WindowRef(
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
window) {
this.window = window;
}
Object.defineProperty(WindowRef.prototype, "native", {
/** Window underlying native object. */
get: function () {
return this.window;
},
enumerable: false,
configurable: true
});
Object.defineProperty(WindowRef.prototype, "hasNative", {
/** Determines whether native element is supported or not. Generally `false` when executing in SSR. */
get: function () {
return !!this.native.window;
},
enumerable: false,
configurable: true
});
return WindowRef;
}());
WindowRef.ɵprov = i0.ɵɵdefineInjectable({ factory: function WindowRef_Factory() { return new WindowRef(i0.ɵɵinject(WINDOW)); }, token: WindowRef, providedIn: "root" });
WindowRef.decorators = [
{ type: i0.Injectable, args: [{
providedIn: "root",
},] }
];
WindowRef.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: i0.Inject, args: [WINDOW,] }] }
]; };
/**
* The indices of each breakpoint provided based on the `UX_VIEWPORT_DEFAULT_BREAKPOINTS`.
* @see UX_VIEWPORT_DEFAULT_BREAKPOINTS
*/
(function (ViewportSizeType) {

@@ -71,3 +367,2 @@ ViewportSizeType[ViewportSizeType["xsmall"] = 0] = "xsmall";

})(exports.ViewportSizeType || (exports.ViewportSizeType = {}));
(function (ComparisonOperation) {

@@ -81,3 +376,2 @@ ComparisonOperation["equals"] = "=";

})(exports.ComparisonOperation || (exports.ComparisonOperation = {}));
(function (DeviceType) {

@@ -89,34 +383,2 @@ DeviceType["desktop"] = "desktop";

var WINDOW = new core.InjectionToken("Window");
var WindowRef = /** @class */ (function () {
function WindowRef(window) {
this.window = window;
}
Object.defineProperty(WindowRef.prototype, "native", {
/** Window underlying native object. */
get: function () {
return this.window;
},
enumerable: true,
configurable: true
});
Object.defineProperty(WindowRef.prototype, "hasNative", {
/** Determines whether native element is supported or not. Generally `false` when executing in SSR. */
get: function () {
return !!this.native.window;
},
enumerable: true,
configurable: true
});
WindowRef.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function WindowRef_Factory() { return new WindowRef(core.ɵɵinject(WINDOW)); }, token: WindowRef, providedIn: "root" });
WindowRef = __decorate([
core.Injectable({
providedIn: "root",
}),
__param(0, core.Inject(WINDOW)),
__metadata("design:paramtypes", [Object])
], WindowRef);
return WindowRef;
}());
var _a;

@@ -139,3 +401,3 @@ // todo: make this configurable

_a);
var UX_VIEWPORT_SSR_DEVICE = new core.InjectionToken("@ssv/ngx.ux-config/viewport/ssr-device");
var UX_VIEWPORT_SSR_DEVICE = new i0.InjectionToken("@ssv/ngx.ux-config/viewport/ssr-device");
var ViewportServerSizeService = /** @class */ (function () {

@@ -146,81 +408,136 @@ function ViewportServerSizeService(deviceType) {

ViewportServerSizeService.prototype.get = function () {
var size = viewportSizeSSR[this.deviceType];
if (!size) {
size = viewportSizeSSR[exports.DeviceType.desktop];
}
return size;
return viewportSizeSSR[this.deviceType] || viewportSizeSSR[exports.DeviceType.desktop];
};
ViewportServerSizeService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ViewportServerSizeService_Factory() { return new ViewportServerSizeService(core.ɵɵinject(UX_VIEWPORT_SSR_DEVICE, 8)); }, token: ViewportServerSizeService, providedIn: "root" });
ViewportServerSizeService = __decorate([
core.Injectable({
providedIn: "root",
}),
__param(0, core.Optional()), __param(0, core.Inject(UX_VIEWPORT_SSR_DEVICE)),
__metadata("design:paramtypes", [String])
], ViewportServerSizeService);
return ViewportServerSizeService;
}());
ViewportServerSizeService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ViewportServerSizeService_Factory() { return new ViewportServerSizeService(i0.ɵɵinject(UX_VIEWPORT_SSR_DEVICE, 8)); }, token: ViewportServerSizeService, providedIn: "root" });
ViewportServerSizeService.decorators = [
{ type: i0.Injectable, args: [{
providedIn: "root",
},] }
];
ViewportServerSizeService.ctorParameters = function () { return [
{ type: exports.DeviceType, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [UX_VIEWPORT_SSR_DEVICE,] }] }
]; };
var UX_VIEWPORT_DEFAULT_CONFIG = {
resizePollingSpeed: 33
};
var _a$1;
// todo: make this configurable
/** Viewport sizes config, by upper bound. e.g. given width '1000' and `medium` is set to '992' => `large`. */
var viewportSizesConfig = {
xsmall: 450,
small: 767,
medium: 992,
large: 1200,
xlarge: 1500,
xxlarge: 1920,
xxlarge1: 2100
};
// todo: autogenereate
var viewportSizeRefs = (_a$1 = {},
_a$1[exports.ViewportSizeType.xsmall] = Object.freeze({
name: "xsmall",
type: exports.ViewportSizeType.xsmall,
widthThreshold: viewportSizesConfig.xsmall,
}),
_a$1[exports.ViewportSizeType.small] = Object.freeze({
name: "small",
type: exports.ViewportSizeType.small,
widthThreshold: viewportSizesConfig.small,
}),
_a$1[exports.ViewportSizeType.medium] = Object.freeze({
name: "medium",
type: exports.ViewportSizeType.medium,
widthThreshold: viewportSizesConfig.medium,
}),
_a$1[exports.ViewportSizeType.large] = Object.freeze({
name: "large",
type: exports.ViewportSizeType.large,
widthThreshold: viewportSizesConfig.large,
}),
_a$1[exports.ViewportSizeType.xlarge] = Object.freeze({
name: "xlarge",
type: exports.ViewportSizeType.xlarge,
widthThreshold: viewportSizesConfig.xlarge,
}),
_a$1[exports.ViewportSizeType.xxlarge] = Object.freeze({
name: "xxlarge",
type: exports.ViewportSizeType.xxlarge,
widthThreshold: viewportSizesConfig.xxlarge,
}),
_a$1[exports.ViewportSizeType.xxlarge1] = Object.freeze({
name: "xxlarge1",
type: exports.ViewportSizeType.xxlarge1,
widthThreshold: viewportSizesConfig.xxlarge1,
}),
function isViewportSizeMatcherExpression(value) {
if (typeof value !== "object" || !value) {
return false;
}
var args = value;
if (args.size && args.operation) {
return true;
}
return false;
}
function isViewportSizeMatcherTupleExpression(arg) {
if (!arg) {
return false;
}
if (Array.isArray(arg)) {
if (arg.length === 2) {
var _a = __read(arg, 1), op = _a[0];
return operations.includes(op);
}
}
return false;
}
var operations = Object.values(exports.ComparisonOperation);
var COMPARISON_OPERATION_FUNC_MAPPING = (_a$1 = {},
_a$1[exports.ComparisonOperation.equals] = function (a, b) { return a === b; },
_a$1[exports.ComparisonOperation.notEquals] = function (a, b) { return a !== b; },
_a$1[exports.ComparisonOperation.lessThan] = function (a, b) { return a < b; },
_a$1[exports.ComparisonOperation.lessOrEqualThan] = function (a, b) { return a <= b; },
_a$1[exports.ComparisonOperation.greaterThan] = function (a, b) { return a > b; },
_a$1[exports.ComparisonOperation.greaterOrEqualThan] = function (a, b) { return a >= b; },
_a$1);
function isViewportConditionMatch(evaluateSize, conditions, viewportSizeTypeInfoRefs) {
var isExcluded = match(conditions.sizeTypeExclude, evaluateSize.name, false);
var isIncluded;
var isExpressionTruthy;
if (!isExcluded && conditions.expression) {
var expressionSizeTypeValue = viewportSizeTypeInfoRefs[conditions.expression.size].type;
var expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expression.operation];
isExpressionTruthy = expMatcher(evaluateSize.type, expressionSizeTypeValue);
}
else {
isIncluded = match(conditions.sizeType, evaluateSize.name, true);
}
var shouldRender = (isExpressionTruthy || isIncluded) && !isExcluded;
// console.warn(">>> shouldRender", { evaluateSize, conditions, shouldRender });
return !!shouldRender;
}
function match(value, targetValue, defaultValue) {
if (!value) {
return defaultValue;
}
return Array.isArray(value)
? value.includes(targetValue)
: value === targetValue;
}
/**
* Converts the breakpoints into a 2 dimensional array containing the name and width, and sorted from
* smallest to largest.
* @param breakpoints the breakpoints obtained from the config
* @internal
*/
function getSortedBreakpoints(breakpoints) {
return Object.entries(breakpoints)
.sort(function (_a, _b) {
var _c = __read(_a, 2), widthA = _c[1];
var _d = __read(_b, 2), widthB = _d[1];
return widthA - widthB;
});
}
/**
* A util function which generates the ViewportSizeTypeInfo.type for each breakpoint.
* @param breakpoints the custom breakpoints
*/
function generateViewportSizeType(breakpoints) {
return Object.freeze(getSortedBreakpoints(breakpoints).reduce(function (dictionary, _a, index) {
var _b = __read(_a, 1), name = _b[0];
dictionary[name] = index;
dictionary[index] = name;
return dictionary;
}, {}));
}
/**
* Pre-processes the given breakpoints into an ordered list from smallest to largest while generating
* all the necessary information on the viewport.
* @param breakpoints the breakpoints obtained from the config
* @internal
*/
function generateViewportSizeTypeInfoList(breakpoints) {
return getSortedBreakpoints(breakpoints)
.map(function (_a, index) {
var _b = __read(_a, 2), name = _b[0], width = _b[1];
return (Object.freeze({
name: name,
type: index,
widthThreshold: width
}));
});
}
/**
* Converts the breakpoint list into a dictionary while using the name as key.
* @param breakpointList the list of breakpoints
* @internal
*/
function generateViewportSizeTypeInfoRefs(breakpointList) {
return Object.freeze(breakpointList.reduce(function (dictionary, breakpoint) {
dictionary[breakpoint.name] = breakpoint;
return dictionary;
}, {}));
}
var ViewportService = /** @class */ (function () {
function ViewportService(config, document, windowRef, viewportServerSize) {
function ViewportService(windowRef, viewportServerSize, config) {
var _this = this;
this.document = document;
this.windowRef = windowRef;
this.viewportServerSize = viewportServerSize;
this._sizeTypes = generateViewportSizeTypeInfoList(config.viewport.breakpoints);
this._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);
if (windowRef.hasNative) {
this.resize$ = rxjs.fromEvent(window, "resize").pipe(operators.map(function () { return _this.getViewportSize(); }), operators.auditTime(config.viewport.resizePollingSpeed || UX_VIEWPORT_DEFAULT_CONFIG.resizePollingSpeed), operators.share());
this.resize$ = rxjs.fromEvent(window, "resize").pipe(operators.map(function () { return _this.getViewportSize(); }), operators.auditTime(config.viewport.resizePollingSpeed), operators.share());
}

@@ -230,4 +547,16 @@ else {

}
this.sizeType$ = this.resize$.pipe(operators.startWith(this.getViewportSize()), operators.map(function (x) { return _this.calculateViewportSize(x.width); }), operators.distinctUntilChanged(), operators.shareReplay(1));
this.sizeType$ = this.resize$.pipe(operators.startWith(this.getViewportSize()), operators.distinctUntilChanged(function (a, b) { return a.width === b.width; }), operators.map(function (x) { return _this.getSizeTypeInfo(x.width); }), operators.distinctUntilChanged(), operators.shareReplay(1));
}
Object.defineProperty(ViewportService.prototype, "sizeTypeMap", {
/** Size types refs of the generated viewport size type info. */
get: function () { return this._sizeTypeMap; },
enumerable: false,
configurable: true
});
Object.defineProperty(ViewportService.prototype, "sizeTypes", {
/** Viewport size types list ordered by type, smallest to largest. */
get: function () { return this._sizeTypes; },
enumerable: false,
configurable: true
});
/**

@@ -249,2 +578,3 @@ * Calculates amount of items that fits into container's width.

};
/** Returns the current viewport size */
ViewportService.prototype.getViewportSize = function () {

@@ -255,7 +585,6 @@ if (!this.windowRef.hasNative) {

var ua = navigator.userAgent.toLowerCase();
// safari subtracts the scrollbar width
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) {
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) { // safari subtracts the scrollbar width
return {
width: this.document.documentElement.clientWidth,
height: this.document.documentElement.clientHeight,
width: this.windowRef.native.document.documentElement.clientWidth,
height: this.windowRef.native.document.documentElement.clientHeight,
};

@@ -268,101 +597,26 @@ }

};
ViewportService.prototype.calculateViewportSize = function (width) {
if (width === this.lastWidthCheck && this.lastWidthSizeInfo) {
return this.lastWidthSizeInfo;
ViewportService.prototype.getSizeTypeInfo = function (width) {
var lastEntryIndex = this.sizeTypes.length - 1;
for (var idx = 0; idx < lastEntryIndex; idx++) {
var viewportSizeTypeInfo = this.sizeTypes[idx];
if (width <= viewportSizeTypeInfo.widthThreshold) {
return viewportSizeTypeInfo;
}
}
this.lastWidthCheck = width;
// todo: make this more dynamic + decouple from lodash
if (lodash.inRange(width, viewportSizesConfig.xsmall)) {
this.lastWidthSizeInfo = viewportSizeRefs[exports.ViewportSizeType.xsmall];
}
else if (lodash.inRange(width, viewportSizesConfig.xsmall, viewportSizesConfig.small)) {
this.lastWidthSizeInfo = viewportSizeRefs[exports.ViewportSizeType.small];
}
else if (lodash.inRange(width, viewportSizesConfig.small, viewportSizesConfig.medium)) {
this.lastWidthSizeInfo = viewportSizeRefs[exports.ViewportSizeType.medium];
}
else if (lodash.inRange(width, viewportSizesConfig.medium, viewportSizesConfig.large)) {
this.lastWidthSizeInfo = viewportSizeRefs[exports.ViewportSizeType.large];
}
else if (lodash.inRange(width, viewportSizesConfig.large, viewportSizesConfig.xlarge)) {
this.lastWidthSizeInfo = viewportSizeRefs[exports.ViewportSizeType.xlarge];
}
else if (lodash.inRange(width, viewportSizesConfig.xlarge, viewportSizesConfig.xxlarge)) {
this.lastWidthSizeInfo = viewportSizeRefs[exports.ViewportSizeType.xxlarge];
}
else {
this.lastWidthSizeInfo = viewportSizeRefs[exports.ViewportSizeType.xxlarge1];
}
return this.lastWidthSizeInfo;
return this.sizeTypes[lastEntryIndex];
};
ViewportService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ViewportService_Factory() { return new ViewportService(core.ɵɵinject(UX_CONFIG), core.ɵɵinject(common.DOCUMENT), core.ɵɵinject(WindowRef), core.ɵɵinject(ViewportServerSizeService)); }, token: ViewportService, providedIn: "root" });
ViewportService = __decorate([
core.Injectable({
providedIn: "root",
}),
__param(0, core.Inject(UX_CONFIG)),
__param(1, core.Inject(common.DOCUMENT)),
__metadata("design:paramtypes", [Object, Object, WindowRef,
ViewportServerSizeService])
], ViewportService);
return ViewportService;
}());
ViewportService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ViewportService_Factory() { return new ViewportService(i0.ɵɵinject(WindowRef), i0.ɵɵinject(ViewportServerSizeService), i0.ɵɵinject(UX_CONFIG)); }, token: ViewportService, providedIn: "root" });
ViewportService.decorators = [
{ type: i0.Injectable, args: [{
providedIn: "root",
},] }
];
ViewportService.ctorParameters = function () { return [
{ type: WindowRef },
{ type: ViewportServerSizeService },
{ type: undefined, decorators: [{ type: i0.Inject, args: [UX_CONFIG,] }] }
]; };
var _a$2;
function isViewportSizeMatcherExpression(value) {
if (typeof value !== "object" || !value) {
return false;
}
var args = value;
if (args.size && args.operation) {
return true;
}
return false;
}
function isViewportSizeMatcherTupleExpression(arg) {
if (!arg) {
return false;
}
if (Array.isArray(arg)) {
if (arg.length === 2) {
var _a = __read(arg, 1), op = _a[0];
return operations.includes(op);
}
}
return false;
}
var operations = Object.values(exports.ComparisonOperation);
var COMPARISON_OPERATION_FUNC_MAPPING = (_a$2 = {},
_a$2[exports.ComparisonOperation.equals] = function (a, b) { return a === b; },
_a$2[exports.ComparisonOperation.notEquals] = function (a, b) { return a !== b; },
_a$2[exports.ComparisonOperation.lessThan] = function (a, b) { return a < b; },
_a$2[exports.ComparisonOperation.lessOrEqualThan] = function (a, b) { return a <= b; },
_a$2[exports.ComparisonOperation.greaterThan] = function (a, b) { return a > b; },
_a$2[exports.ComparisonOperation.greaterOrEqualThan] = function (a, b) { return a >= b; },
_a$2);
function isViewportConditionMatch(evaluteSize, conditions) {
var isExcluded = match(conditions.sizeTypeExclude, evaluteSize.name, false);
var isIncluded;
var isExpressionTruthy;
if (!isExcluded && conditions.expresson) {
var expressionSizeTypeValue = exports.ViewportSizeType[conditions.expresson.size];
var expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expresson.operation];
isExpressionTruthy = expMatcher(evaluteSize.type, expressionSizeTypeValue);
}
else {
isIncluded = match(conditions.sizeType, evaluteSize.name, true);
}
var shouldRender = (isExpressionTruthy || isIncluded) && !isExcluded;
// console.warn(">>> shouldRender", { evaluteSize, conditions, shouldRender });
return !!shouldRender;
}
function match(value, targetValue, defaultValue) {
if (!value) {
return defaultValue;
}
return Array.isArray(value)
? value.includes(targetValue)
: value === targetValue;
}
var SsvViewportMatcherContext = /** @class */ (function () {

@@ -386,9 +640,11 @@ function SsvViewportMatcherContext() {

this._elseViewRef = null;
this.update$ = new rxjs.Subject();
this.sizeType$$ = rxjs.Subscription.EMPTY;
this.cssClass$$ = rxjs.Subscription.EMPTY;
this._update$ = new rxjs.Subject();
this._thenTemplateRef = templateRef;
}
SsvViewportMatcherDirective.prototype.ngOnInit = function () {
var _this = this;
// console.log("ssvViewportMatcher init");
var _this = this;
this.update$$ = this.update$
this._update$
.pipe(

@@ -398,2 +654,3 @@ // tap(x => console.log(">>> ssvViewportMatcher - update triggered", x)),

// tap(x => console.log(">>> ssvViewportMatcher - updating...", x)),
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
operators.tap(function () { return _this._updateView(_this.sizeInfo); }), operators.tap(function () { return _this.cdr.markForCheck(); }))

@@ -404,10 +661,11 @@ .subscribe();

// tap(x => console.log("ssvViewportMatcher - sizeType changed", x)),
operators.tap(function (x) { return (_this.sizeInfo = x); }), operators.tap(function () { return _this.update$.next(_this._context); }))
operators.tap(function (x) { return _this.sizeInfo = x; }), operators.tap(function () { return _this._update$.next(_this._context); }))
.subscribe();
this.cssClass$$ = this.viewport.sizeType$
.pipe(operators.startWith(undefined), operators.filter(function () { return !!(_this._thenViewRef || _this._elseViewRef); }), operators.pairwise(), operators.tap(function (_a) {
var _b = __read(_a, 2), prev = _b[0], curr = _b[1];
.pipe(operators.startWith(undefined), operators.filter(function () { return !!(_this._thenViewRef || _this._elseViewRef); }), operators.pairwise(), operators.tap(function (_b) {
var _c = __read(_b, 2), prev = _c[0], curr = _c[1];
var _a;
var el = _this._thenViewRef
? _this._thenViewRef.rootNodes[0]
: _this._elseViewRef.rootNodes[0];
: (_a = _this._elseViewRef) === null || _a === void 0 ? void 0 : _a.rootNodes[0];
if (!el.classList) {

@@ -419,3 +677,3 @@ return;

}
_this.renderer.addClass(el, "ssv-vp-size--" + curr.name);
_this.renderer.addClass(el, "ssv-vp-size--" + (curr === null || curr === void 0 ? void 0 : curr.name));
}))

@@ -425,14 +683,5 @@ .subscribe();

SsvViewportMatcherDirective.prototype.ngOnDestroy = function () {
if (this.cssClass$$) {
this.cssClass$$.unsubscribe();
}
if (this.sizeType$$) {
this.sizeType$$.unsubscribe();
}
if (this.update$) {
this.update$.complete();
}
if (this.update$$) {
this.update$.unsubscribe();
}
this.cssClass$$.unsubscribe();
this.sizeType$$.unsubscribe();
this._update$.complete();
};

@@ -442,7 +691,7 @@ Object.defineProperty(SsvViewportMatcherDirective.prototype, "ssvViewportMatcher", {

if (isViewportSizeMatcherExpression(value)) {
this._context.expresson = value;
this._context.expression = value;
}
else if (isViewportSizeMatcherTupleExpression(value)) {
var _a = __read(value, 2), op = _a[0], size = _a[1];
this._context.expresson = {
var _b = __read(value, 2), op = _b[0], size = _b[1];
this._context.expression = {
operation: op,

@@ -456,6 +705,6 @@ size: size

if (this.sizeInfo) {
this.update$.next(this._context);
this._update$.next(this._context);
}
},
enumerable: true,
enumerable: false,
configurable: true

@@ -467,6 +716,6 @@ });

if (this.sizeInfo) {
this.update$.next(this._context);
this._update$.next(this._context);
}
},
enumerable: true,
enumerable: false,
configurable: true

@@ -479,10 +728,10 @@ });

if (this.sizeInfo) {
this.update$.next(this._context);
this._update$.next(this._context);
}
},
enumerable: true,
enumerable: false,
configurable: true
});
SsvViewportMatcherDirective.prototype._updateView = function (sizeInfo) {
if (isViewportConditionMatch(sizeInfo, this._context)) {
if (isViewportConditionMatch(sizeInfo, this._context, this.viewport.sizeTypeMap)) {
if (!this._thenViewRef) {

@@ -506,33 +755,25 @@ this._viewContainer.clear();

};
__decorate([
core.Input(),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], SsvViewportMatcherDirective.prototype, "ssvViewportMatcher", null);
__decorate([
core.Input(),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], SsvViewportMatcherDirective.prototype, "ssvViewportMatcherExclude", null);
__decorate([
core.Input(),
__metadata("design:type", core.TemplateRef),
__metadata("design:paramtypes", [core.TemplateRef])
], SsvViewportMatcherDirective.prototype, "ssvViewportMatcherElse", null);
SsvViewportMatcherDirective = __decorate([
core.Directive({
selector: "[ssvViewportMatcher]",
exportAs: "ssvViewportMatcher",
}),
__metadata("design:paramtypes", [ViewportService,
core.Renderer2,
core.ViewContainerRef,
core.ChangeDetectorRef,
core.TemplateRef])
], SsvViewportMatcherDirective);
return SsvViewportMatcherDirective;
}());
SsvViewportMatcherDirective.decorators = [
{ type: i0.Directive, args: [{
selector: "[ssvViewportMatcher]",
exportAs: "ssvViewportMatcher",
},] }
];
SsvViewportMatcherDirective.ctorParameters = function () { return [
{ type: ViewportService },
{ type: i0.Renderer2 },
{ type: i0.ViewContainerRef },
{ type: i0.ChangeDetectorRef },
{ type: i0.TemplateRef }
]; };
SsvViewportMatcherDirective.propDecorators = {
ssvViewportMatcher: [{ type: i0.Input }],
ssvViewportMatcherExclude: [{ type: i0.Input }],
ssvViewportMatcherElse: [{ type: i0.Input }]
};
/** @internal */
var _MODULE_CONFIG = new core.InjectionToken("_ux-config");
var _MODULE_CONFIG = new i0.InjectionToken("_ux-config");
var ɵ0 = UX_DEFAULT_CONFIG;

@@ -542,6 +783,5 @@ var SsvUxModule = /** @class */ (function () {

}
SsvUxModule_1 = SsvUxModule;
SsvUxModule.forRoot = function (config) {
return {
ngModule: SsvUxModule_1,
ngModule: SsvUxModule,
providers: [

@@ -553,22 +793,23 @@ {

},
{ provide: _MODULE_CONFIG, useValue: config || UX_DEFAULT_CONFIG },
{ provide: _MODULE_CONFIG, useValue: config },
],
};
};
var SsvUxModule_1;
SsvUxModule = SsvUxModule_1 = __decorate([
core.NgModule({
declarations: [SsvViewportMatcherDirective],
providers: [
{ provide: UX_CONFIG, useValue: ɵ0 },
{ provide: WINDOW, useFactory: _window },
],
exports: [SsvViewportMatcherDirective],
})
], SsvUxModule);
return SsvUxModule;
}());
SsvUxModule.decorators = [
{ type: i0.NgModule, args: [{
declarations: [SsvViewportMatcherDirective],
providers: [
{ provide: UX_CONFIG, useValue: ɵ0 },
{ provide: WINDOW, useFactory: _window },
],
exports: [SsvViewportMatcherDirective],
},] }
];
/** @internal */
function _moduleConfigFactory(config) {
return typeof config === "function" ? config() : config;
var uxOptions = (typeof config === "function" ? config() : config) || UX_DEFAULT_CONFIG;
var viewport = Object.assign(Object.assign({}, UX_DEFAULT_CONFIG.viewport), uxOptions.viewport); // breakpoints shouldn't be merged
return { viewport: viewport };
}

@@ -583,4 +824,8 @@ /** @internal */

var VERSION = "1.1.1";
var VERSION = "1.2.0-dev102";
/**
* Generated bundle index. Do not edit.
*/
exports.COMPARISON_OPERATION_FUNC_MAPPING = COMPARISON_OPERATION_FUNC_MAPPING;

@@ -592,2 +837,3 @@ exports.SsvUxModule = SsvUxModule;

exports.UX_DEFAULT_CONFIG = UX_DEFAULT_CONFIG;
exports.UX_VIEWPORT_DEFAULT_BREAKPOINTS = UX_VIEWPORT_DEFAULT_BREAKPOINTS;
exports.UX_VIEWPORT_SSR_DEVICE = UX_VIEWPORT_SSR_DEVICE;

@@ -600,12 +846,13 @@ exports.VERSION = VERSION;

exports._window = _window;
exports.isViewportConditionMatch = isViewportConditionMatch;
exports.generateViewportSizeType = generateViewportSizeType;
exports.isViewportSizeMatcherExpression = isViewportSizeMatcherExpression;
exports.isViewportSizeMatcherTupleExpression = isViewportSizeMatcherTupleExpression;
exports.ɵ0 = ɵ0;
exports.ɵa = WINDOW;
exports.ɵb = WindowRef;
exports.ɵa = UX_VIEWPORT_DEFAULT_CONFIG;
exports.ɵb = WINDOW;
exports.ɵc = WindowRef;
Object.defineProperty(exports, '__esModule', { value: true });
}));
})));
//# sourceMappingURL=ssv-ngx.ux.umd.js.map

@@ -1,2 +0,16 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators"),require("lodash"),require("@angular/common")):"function"==typeof define&&define.amd?define("@ssv/ngx.ux",["exports","@angular/core","rxjs","rxjs/operators","lodash","@angular/common"],t):t(((e=e||self).ssv=e.ssv||{},e.ssv.ngx=e.ssv.ngx||{},e.ssv.ngx.ux={}),e.ng.core,e.rxjs,e.rxjs.operators,e._,e.ng.common)}(this,function(e,t,i,n,r,o){"use strict";function s(e,t,i,n){var r,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(s=(o<3?r(s):o>3?r(t,i,s):r(t,i))||s);return o>3&&s&&Object.defineProperty(t,i,s),s}function a(e,t){return function(i,n){t(i,n,e)}}function p(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function l(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,o=i.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(a){r={error:a}}finally{try{n&&!n.done&&(i=o["return"])&&i.call(o)}finally{if(r)throw r.error}}return s}var c,u,h,f={viewport:{resizePollingSpeed:33}},d=new t.InjectionToken("@ssv/ngx.ux-config");(c=e.ViewportSizeType||(e.ViewportSizeType={}))[c.xsmall=0]="xsmall",c[c.small=1]="small",c[c.medium=2]="medium",c[c.large=3]="large",c[c.xlarge=4]="xlarge",c[c.xxlarge=5]="xxlarge",c[c.xxlarge1=6]="xxlarge1",(u=e.ComparisonOperation||(e.ComparisonOperation={})).equals="=",u.notEquals="<>",u.lessThan="<",u.lessOrEqualThan="<=",u.greaterThan=">",u.greaterOrEqualThan=">=",(h=e.DeviceType||(e.DeviceType={})).desktop="desktop",h.mobile="mobile",h.tablet="tablet";var w,y,g,m=new t.InjectionToken("Window"),v=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.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(m))},token:e,providedIn:"root"}),e=s([t.Injectable({providedIn:"root"}),a(0,t.Inject(m)),p("design:paramtypes",[Object])],e)}(),x=((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),z=new t.InjectionToken("@ssv/ngx.ux-config/viewport/ssr-device"),T=function(){function i(e){this.deviceType=e}return i.prototype.get=function(){var t=x[this.deviceType];return t||(t=x[e.DeviceType.desktop]),t},i.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new i(t.ɵɵinject(z,8))},token:i,providedIn:"root"}),i=s([t.Injectable({providedIn:"root"}),a(0,t.Optional()),a(0,t.Inject(z)),p("design:paramtypes",[String])],i)}(),b={resizePollingSpeed:33},V=450,S=767,_=992,j=1200,O=1500,I=1920,R=2100,C=((y={})[e.ViewportSizeType.xsmall]=Object.freeze({name:"xsmall",type:e.ViewportSizeType.xsmall,widthThreshold:V}),y[e.ViewportSizeType.small]=Object.freeze({name:"small",type:e.ViewportSizeType.small,widthThreshold:S}),y[e.ViewportSizeType.medium]=Object.freeze({name:"medium",type:e.ViewportSizeType.medium,widthThreshold:_}),y[e.ViewportSizeType.large]=Object.freeze({name:"large",type:e.ViewportSizeType.large,widthThreshold:j}),y[e.ViewportSizeType.xlarge]=Object.freeze({name:"xlarge",type:e.ViewportSizeType.xlarge,widthThreshold:O}),y[e.ViewportSizeType.xxlarge]=Object.freeze({name:"xxlarge",type:e.ViewportSizeType.xxlarge,widthThreshold:I}),y[e.ViewportSizeType.xxlarge1]=Object.freeze({name:"xxlarge1",type:e.ViewportSizeType.xxlarge1,widthThreshold:R}),y),$=function(){function l(e,t,r,o){var s=this;this.document=t,this.windowRef=r,this.viewportServerSize=o,r.hasNative?this.resize$=i.fromEvent(window,"resize").pipe(n.map(function(){return s.getViewportSize()}),n.auditTime(e.viewport.resizePollingSpeed||b.resizePollingSpeed),n.share()):this.resize$=i.of(o.get()),this.sizeType$=this.resize$.pipe(n.startWith(this.getViewportSize()),n.map(function(e){return s.calculateViewportSize(e.width)}),n.distinctUntilChanged(),n.shareReplay(1))}return l.prototype.calculateItemsPerRow=function(e,t){return 0===e?0:(e||this.windowRef.hasNative||(e=this.viewportServerSize.get().width),e/t)},l.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.document.documentElement.clientWidth,height:this.document.documentElement.clientHeight}:{width:this.windowRef.native.innerWidth,height:this.windowRef.native.innerHeight}},l.prototype.calculateViewportSize=function(t){return t===this.lastWidthCheck&&this.lastWidthSizeInfo?this.lastWidthSizeInfo:(this.lastWidthCheck=t,r.inRange(t,V)?this.lastWidthSizeInfo=C[e.ViewportSizeType.xsmall]:r.inRange(t,V,S)?this.lastWidthSizeInfo=C[e.ViewportSizeType.small]:r.inRange(t,S,_)?this.lastWidthSizeInfo=C[e.ViewportSizeType.medium]:r.inRange(t,_,j)?this.lastWidthSizeInfo=C[e.ViewportSizeType.large]:r.inRange(t,j,O)?this.lastWidthSizeInfo=C[e.ViewportSizeType.xlarge]:r.inRange(t,O,I)?this.lastWidthSizeInfo=C[e.ViewportSizeType.xxlarge]:this.lastWidthSizeInfo=C[e.ViewportSizeType.xxlarge1],this.lastWidthSizeInfo)},l.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new l(t.ɵɵinject(d),t.ɵɵinject(o.DOCUMENT),t.ɵɵinject(v),t.ɵɵinject(T))},token:l,providedIn:"root"}),l=s([t.Injectable({providedIn:"root"}),a(0,t.Inject(d)),a(1,t.Inject(o.DOCUMENT)),p("design:paramtypes",[Object,Object,v,T])],l)}();function E(e){if("object"!=typeof e||!e)return!1;var t=e;return!(!t.size||!t.operation)}function M(e){if(!e)return!1;if(Array.isArray(e)&&2===e.length){var t=l(e,1)[0];return D.includes(t)}return!1}var D=Object.values(e.ComparisonOperation),P=((g={})[e.ComparisonOperation.equals]=function(e,t){return e===t},g[e.ComparisonOperation.notEquals]=function(e,t){return e!==t},g[e.ComparisonOperation.lessThan]=function(e,t){return e<t},g[e.ComparisonOperation.lessOrEqualThan]=function(e,t){return e<=t},g[e.ComparisonOperation.greaterThan]=function(e,t){return e>t},g[e.ComparisonOperation.greaterOrEqualThan]=function(e,t){return e>=t},g);function W(t,i){var n,r,o=N(i.sizeTypeExclude,t.name,!1);if(!o&&i.expresson){var s=e.ViewportSizeType[i.expresson.size];r=(0,P[i.expresson.operation])(t.type,s)}else n=N(i.sizeType,t.name,!0);return!!((r||n)&&!o)}function N(e,t,i){return e?Array.isArray(e)?e.includes(t):e===t:i}var k=function(){return function(){this.sizeType=null,this.sizeTypeExclude=null}}(),q=function(){function e(e,t,n,r,o){this.viewport=e,this.renderer=t,this._viewContainer=n,this.cdr=r,this._context=new k,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this.update$=new i.Subject,this._thenTemplateRef=o}return e.prototype.ngOnInit=function(){var e=this;this.update$$=this.update$.pipe(n.filter(function(){return!!e.sizeInfo}),n.tap(function(){return e._updateView(e.sizeInfo)}),n.tap(function(){return e.cdr.markForCheck()})).subscribe(),this.sizeType$$=this.viewport.sizeType$.pipe(n.tap(function(t){return e.sizeInfo=t}),n.tap(function(){return e.update$.next(e._context)})).subscribe(),this.cssClass$$=this.viewport.sizeType$.pipe(n.startWith(undefined),n.filter(function(){return!(!e._thenViewRef&&!e._elseViewRef)}),n.pairwise(),n.tap(function(t){var i=l(t,2),n=i[0],r=i[1],o=e._thenViewRef?e._thenViewRef.rootNodes[0]:e._elseViewRef.rootNodes[0];o.classList&&(n&&e.renderer.removeClass(o,"ssv-vp-size--"+n.name),e.renderer.addClass(o,"ssv-vp-size--"+r.name))})).subscribe()},e.prototype.ngOnDestroy=function(){this.cssClass$$&&this.cssClass$$.unsubscribe(),this.sizeType$$&&this.sizeType$$.unsubscribe(),this.update$&&this.update$.complete(),this.update$$&&this.update$.unsubscribe()},Object.defineProperty(e.prototype,"ssvViewportMatcher",{set:function(e){if(E(e))this._context.expresson=e;else if(M(e)){var t=l(e,2),i=t[0],n=t[1];this._context.expresson={operation:i,size:n}}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._updateView=function(e){W(e,this._context)?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)))},s([t.Input(),p("design:type",Object),p("design:paramtypes",[Object])],e.prototype,"ssvViewportMatcher",null),s([t.Input(),p("design:type",Object),p("design:paramtypes",[Object])],e.prototype,"ssvViewportMatcherExclude",null),s([t.Input(),p("design:type",t.TemplateRef),p("design:paramtypes",[t.TemplateRef])],e.prototype,"ssvViewportMatcherElse",null),e=s([t.Directive({selector:"[ssvViewportMatcher]",exportAs:"ssvViewportMatcher"}),p("design:paramtypes",[$,t.Renderer2,t.ViewContainerRef,t.ChangeDetectorRef,t.TemplateRef])],e)}(),A=new t.InjectionToken("_ux-config"),U=f,F=function(){function e(){}var i;return i=e,e.forRoot=function(e){return{ngModule:i,providers:[{provide:d,useFactory:G,deps:[A]},{provide:A,useValue:e||f}]}},e=i=s([t.NgModule({declarations:[q],providers:[{provide:d,useValue:U},{provide:m,useFactory:L}],exports:[q]})],e)}();function G(e){return"function"==typeof e?e():e}function L(){return"undefined"!=typeof window?window:{}}e.COMPARISON_OPERATION_FUNC_MAPPING=P,e.SsvUxModule=F,e.SsvViewportMatcherContext=k,e.SsvViewportMatcherDirective=q,e.UX_CONFIG=d,e.UX_DEFAULT_CONFIG=f,e.UX_VIEWPORT_SSR_DEVICE=z,e.VERSION="1.1.1",e.ViewportServerSizeService=T,e.ViewportService=$,e._MODULE_CONFIG=A,e._moduleConfigFactory=G,e._window=L,e.isViewportConditionMatch=W,e.isViewportSizeMatcherExpression=E,e.isViewportSizeMatcherTupleExpression=M,e.ɵ0=U,e.ɵa=m,e.ɵb=v,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ssv/ngx.ux",["exports","@angular/core","rxjs","rxjs/operators"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).ssv=e.ssv||{},e.ssv.ngx=e.ssv.ngx||{},e.ssv.ngx.ux={}),e.ng.core,e.rxjs,e.rxjs.operators)}(this,(function(e,t,i,r){"use strict";
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */function n(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var r,n,o=i.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){n={error:e}}finally{try{r&&!r.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return s}var o,s,a,p,u={xsmall:450,small:767,medium:992,large:1200,xlarge:1500,xxlarge:1920,xxlarge1:2100},c={resizePollingSpeed:33,breakpoints:u},l={viewport:c},f=new t.InjectionToken("@ssv/ngx.ux-config"),h=new t.InjectionToken("Window"),d=function(){function e(e){this.window=e}return Object.defineProperty(e.prototype,"native",{get:function(){return this.window},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"hasNative",{get:function(){return!!this.native.window},enumerable:!1,configurable:!0}),e}();d.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new d(t.ɵɵinject(h))},token:d,providedIn:"root"}),d.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],d.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[h]}]}]},(o=e.ViewportSizeType||(e.ViewportSizeType={}))[o.xsmall=0]="xsmall",o[o.small=1]="small",o[o.medium=2]="medium",o[o.large=3]="large",o[o.xlarge=4]="xlarge",o[o.xxlarge=5]="xxlarge",o[o.xxlarge1=6]="xxlarge1",(s=e.ComparisonOperation||(e.ComparisonOperation={})).equals="=",s.notEquals="<>",s.lessThan="<",s.lessOrEqualThan="<=",s.greaterThan=">",s.greaterOrEqualThan=">=",(a=e.DeviceType||(e.DeviceType={})).desktop="desktop",a.mobile="mobile",a.tablet="tablet";var v,w=((p={})[e.DeviceType.desktop]={width:1366,height:768},p[e.DeviceType.tablet]={width:768,height:1024},p[e.DeviceType.mobile]={width:414,height:736},p),y=new t.InjectionToken("@ssv/ngx.ux-config/viewport/ssr-device"),g=function(){function t(e){this.deviceType=e}return t.prototype.get=function(){return w[this.deviceType]||w[e.DeviceType.desktop]},t}();function m(e){if("object"!=typeof e||!e)return!1;var t=e;return!(!t.size||!t.operation)}function x(e){if(!e)return!1;if(Array.isArray(e)&&2===e.length){var t=n(e,1)[0];return T.includes(t)}return!1}g.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new g(t.ɵɵinject(y,8))},token:g,providedIn:"root"}),g.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],g.ctorParameters=function(){return[{type:e.DeviceType,decorators:[{type:t.Optional},{type:t.Inject,args:[y]}]}]};var T=Object.values(e.ComparisonOperation),_=((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 b(e,t,i){return e?Array.isArray(e)?e.includes(t):e===t:i}function z(e){return Object.entries(e).sort((function(e,t){return n(e,2)[1]-n(t,2)[1]}))}var O=function(){function e(e,t,o){var s,a=this;this.windowRef=e,this.viewportServerSize=t,this._sizeTypes=z(o.viewport.breakpoints).map((function(e,t){var i=n(e,2),r=i[0],o=i[1];return Object.freeze({name:r,type:t,widthThreshold:o})})),this._sizeTypeMap=(s=this._sizeTypes,Object.freeze(s.reduce((function(e,t){return e[t.name]=t,e}),{}))),e.hasNative?this.resize$=i.fromEvent(window,"resize").pipe(r.map((function(){return a.getViewportSize()})),r.auditTime(o.viewport.resizePollingSpeed),r.share()):this.resize$=i.of(t.get()),this.sizeType$=this.resize$.pipe(r.startWith(this.getViewportSize()),r.distinctUntilChanged((function(e,t){return e.width===t.width})),r.map((function(e){return a.getSizeTypeInfo(e.width)})),r.distinctUntilChanged(),r.shareReplay(1))}return Object.defineProperty(e.prototype,"sizeTypeMap",{get:function(){return this._sizeTypeMap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"sizeTypes",{get:function(){return this._sizeTypes},enumerable:!1,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.prototype.getSizeTypeInfo=function(e){for(var t=this.sizeTypes.length-1,i=0;i<t;i++){var r=this.sizeTypes[i];if(e<=r.widthThreshold)return r}return this.sizeTypes[t]},e}();O.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new O(t.ɵɵinject(d),t.ɵɵinject(g),t.ɵɵinject(f))},token:O,providedIn:"root"}),O.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],O.ctorParameters=function(){return[{type:d},{type:g},{type:void 0,decorators:[{type:t.Inject,args:[f]}]}]};var V=function(){this.sizeType=null,this.sizeTypeExclude=null},I=function(){function e(e,t,r,n,o){this.viewport=e,this.renderer=t,this._viewContainer=r,this.cdr=n,this._context=new V,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 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 i,r=n(t,2),o=r[0],s=r[1],a=e._thenViewRef?e._thenViewRef.rootNodes[0]:null===(i=e._elseViewRef)||void 0===i?void 0:i.rootNodes[0];a.classList&&(o&&e.renderer.removeClass(a,"ssv-vp-size--"+o.name),e.renderer.addClass(a,"ssv-vp-size--"+(null==s?void 0:s.name)))}))).subscribe()},e.prototype.ngOnDestroy=function(){this.cssClass$$.unsubscribe(),this.sizeType$$.unsubscribe(),this._update$.complete()},Object.defineProperty(e.prototype,"ssvViewportMatcher",{set:function(e){if(m(e))this._context.expression=e;else if(x(e)){var t=n(e,2),i=t[0],r=t[1];this._context.expression={operation:i,size:r}}else this._context.sizeType=e;this.sizeInfo&&this._update$.next(this._context)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ssvViewportMatcherExclude",{set:function(e){this._context.sizeTypeExclude=e,this.sizeInfo&&this._update$.next(this._context)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ssvViewportMatcherElse",{set:function(e){this._elseTemplateRef=e,this._elseViewRef=null,this.sizeInfo&&this._update$.next(this._context)},enumerable:!1,configurable:!0}),e.prototype._updateView=function(e){!function(e,t,i){var r,n,o=b(t.sizeTypeExclude,e.name,!1);if(!o&&t.expression){var s=i[t.expression.size].type;n=(0,_[t.expression.operation])(e.type,s)}else r=b(t.sizeType,e.name,!0);return!(!n&&!r||o)}(e,this._context,this.viewport.sizeTypeMap)?this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context))):this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context)))},e}();I.decorators=[{type:t.Directive,args:[{selector:"[ssvViewportMatcher]",exportAs:"ssvViewportMatcher"}]}],I.ctorParameters=function(){return[{type:O},{type:t.Renderer2},{type:t.ViewContainerRef},{type:t.ChangeDetectorRef},{type:t.TemplateRef}]},I.propDecorators={ssvViewportMatcher:[{type:t.Input}],ssvViewportMatcherExclude:[{type:t.Input}],ssvViewportMatcherElse:[{type:t.Input}]};var R=new t.InjectionToken("_ux-config"),j=l,S=function(){function e(){}return e.forRoot=function(t){return{ngModule:e,providers:[{provide:f,useFactory:C,deps:[R]},{provide:R,useValue:t}]}},e}();function C(e){var t=("function"==typeof e?e():e)||l;return{viewport:Object.assign(Object.assign({},l.viewport),t.viewport)}}function E(){return"undefined"!=typeof window?window:{}}S.decorators=[{type:t.NgModule,args:[{declarations:[I],providers:[{provide:f,useValue:j},{provide:h,useFactory:E}],exports:[I]}]}];e.COMPARISON_OPERATION_FUNC_MAPPING=_,e.SsvUxModule=S,e.SsvViewportMatcherContext=V,e.SsvViewportMatcherDirective=I,e.UX_CONFIG=f,e.UX_DEFAULT_CONFIG=l,e.UX_VIEWPORT_DEFAULT_BREAKPOINTS=u,e.UX_VIEWPORT_SSR_DEVICE=y,e.VERSION="1.2.0-dev102",e.ViewportServerSizeService=g,e.ViewportService=O,e._MODULE_CONFIG=R,e._moduleConfigFactory=C,e._window=E,e.generateViewportSizeType=function(e){return Object.freeze(z(e).reduce((function(e,t,i){var r=n(t,1)[0];return e[r]=i,e[i]=r,e}),{}))},e.isViewportSizeMatcherExpression=m,e.isViewportSizeMatcherTupleExpression=x,e.ɵ0=j,e.ɵa=c,e.ɵb=h,e.ɵc=d,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=ssv-ngx.ux.umd.min.js.map
import { InjectionToken } from "@angular/core";
import { UxViewportOptions } from "./viewport/viewport.model";
export interface UxOptions {
viewport: Partial<UxViewportOptions>;
viewport: UxViewportOptions;
}
export declare const UX_DEFAULT_CONFIG: UxOptions;
export declare const UX_CONFIG: InjectionToken<UxOptions>;
import { InjectionToken } from "@angular/core";
import { UX_VIEWPORT_DEFAULT_CONFIG } from "./viewport/viewport.const";
export const UX_DEFAULT_CONFIG = {
viewport: {
resizePollingSpeed: 33,
}
viewport: UX_VIEWPORT_DEFAULT_CONFIG,
};
export const UX_CONFIG = new InjectionToken("@ssv/ngx.ux-config");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNzdi9uZ3gudXgvIiwic291cmNlcyI6WyJjb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8vQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBYztJQUMzQyxRQUFRLEVBQUU7UUFDVCxrQkFBa0IsRUFBRSxFQUFFO0tBQ3RCO0NBQ0QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBWSxvQkFBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVXhWaWV3cG9ydE9wdGlvbnMgfSBmcm9tIFwiLi92aWV3cG9ydC92aWV3cG9ydC5tb2RlbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFV4T3B0aW9ucyB7XG5cdHZpZXdwb3J0OiBQYXJ0aWFsPFV4Vmlld3BvcnRPcHRpb25zPjtcbn1cblxuZXhwb3J0IGNvbnN0IFVYX0RFRkFVTFRfQ09ORklHOiBVeE9wdGlvbnMgPSB7XG5cdHZpZXdwb3J0OiB7XG5cdFx0cmVzaXplUG9sbGluZ1NwZWVkOiAzMyxcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IFVYX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVeE9wdGlvbnM+KFwiQHNzdi9uZ3gudXgtY29uZmlnXCIpO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2NpcmNsZWNpL3JlcG8vc3JjLyIsInNvdXJjZXMiOlsiY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPdkUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWM7SUFDM0MsUUFBUSxFQUFFLDBCQUEwQjtDQUNwQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFZLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBVWF9WSUVXUE9SVF9ERUZBVUxUX0NPTkZJRyB9IGZyb20gXCIuL3ZpZXdwb3J0L3ZpZXdwb3J0LmNvbnN0XCI7XG5pbXBvcnQgeyBVeFZpZXdwb3J0T3B0aW9ucyB9IGZyb20gXCIuL3ZpZXdwb3J0L3ZpZXdwb3J0Lm1vZGVsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXhPcHRpb25zIHtcblx0dmlld3BvcnQ6IFV4Vmlld3BvcnRPcHRpb25zO1xufVxuXG5leHBvcnQgY29uc3QgVVhfREVGQVVMVF9DT05GSUc6IFV4T3B0aW9ucyA9IHtcblx0dmlld3BvcnQ6IFVYX1ZJRVdQT1JUX0RFRkFVTFRfQ09ORklHLFxufTtcblxuZXhwb3J0IGNvbnN0IFVYX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVeE9wdGlvbnM+KFwiQHNzdi9uZ3gudXgtY29uZmlnXCIpO1xuIl19

@@ -5,2 +5,2 @@ export * from "./viewport/index";

export * from "./version";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3N2L25neC51eC8iLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFFakMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi92aWV3cG9ydC9pbmRleFwiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9jb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmVyc2lvblwiOyJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBRWpDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdmlld3BvcnQvaW5kZXhcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZlcnNpb25cIjtcbiJdfQ==

@@ -1,1 +0,2 @@

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwubW9kZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3N2L25neC51eC8iLCJzb3VyY2VzIjpbImludGVybmFsL2ludGVybmFsLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERpY3Rpb25hcnk8VD4ge1xuXHRba2V5OiBzdHJpbmddOiBUO1xufSJdfQ==
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJpbnRlcm5hbC9pbnRlcm5hbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEaWN0aW9uYXJ5PFQ+IHtcblx0W2tleTogc3RyaW5nXTogVDtcbn1cblxuZXhwb3J0IHR5cGUgUGFydGlhbERlZXA8VD4gPSB7XG5cdFtQIGluIGtleW9mIFRdPzogUGFydGlhbERlZXA8VFtQXT47XG59O1xuIl19

@@ -1,3 +0,1 @@

import * as tslib_1 from "tslib";
var SsvUxModule_1;
import { NgModule, InjectionToken } from "@angular/core";

@@ -10,6 +8,6 @@ import { SsvViewportMatcherDirective } from "./viewport/index";

const ɵ0 = UX_DEFAULT_CONFIG;
let SsvUxModule = SsvUxModule_1 = class SsvUxModule {
export class SsvUxModule {
static forRoot(config) {
return {
ngModule: SsvUxModule_1,
ngModule: SsvUxModule,
providers: [

@@ -21,21 +19,22 @@ {

},
{ provide: _MODULE_CONFIG, useValue: config || UX_DEFAULT_CONFIG },
{ provide: _MODULE_CONFIG, useValue: config },
],
};
}
};
SsvUxModule = SsvUxModule_1 = tslib_1.__decorate([
NgModule({
declarations: [SsvViewportMatcherDirective],
providers: [
{ provide: UX_CONFIG, useValue: ɵ0 },
{ provide: WINDOW, useFactory: _window },
],
exports: [SsvViewportMatcherDirective],
})
], SsvUxModule);
export { SsvUxModule };
}
SsvUxModule.decorators = [
{ type: NgModule, args: [{
declarations: [SsvViewportMatcherDirective],
providers: [
{ provide: UX_CONFIG, useValue: ɵ0 },
{ provide: WINDOW, useFactory: _window },
],
exports: [SsvViewportMatcherDirective],
},] }
];
/** @internal */
export function _moduleConfigFactory(config) {
return typeof config === "function" ? config() : config;
const uxOptions = (typeof config === "function" ? config() : config) || UX_DEFAULT_CONFIG;
const viewport = Object.assign(Object.assign({}, UX_DEFAULT_CONFIG.viewport), uxOptions.viewport); // breakpoints shouldn't be merged
return { viewport };
}

@@ -50,2 +49,2 @@ /** @internal */

export { ɵ0 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNzdi9uZ3gudXgvIiwic291cmNlcyI6WyJtb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFhLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0MsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FDL0MsWUFBWSxDQUNaLENBQUM7V0FLZ0MsaUJBQWlCO0FBTW5ELElBQWEsV0FBVyxtQkFBeEIsTUFBYSxXQUFXO0lBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBd0Q7UUFDdEUsT0FBTztZQUNOLFFBQVEsRUFBRSxhQUFXO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVjtvQkFDQyxPQUFPLEVBQUUsU0FBUztvQkFDbEIsVUFBVSxFQUFFLG9CQUFvQjtvQkFDaEMsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUN0QjtnQkFDRCxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxpQkFBaUIsRUFBRTthQUNsRTtTQUNELENBQUM7SUFDSCxDQUFDO0NBQ0QsQ0FBQTtBQWRZLFdBQVc7SUFUdkIsUUFBUSxDQUFDO1FBQ1QsWUFBWSxFQUFFLENBQUMsMkJBQTJCLENBQUM7UUFDM0MsU0FBUyxFQUFFO1lBQ1YsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsSUFBbUIsRUFBRTtZQUVuRCxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRTtTQUN4QztRQUNELE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO0tBQ3RDLENBQUM7R0FDVyxXQUFXLENBY3ZCO1NBZFksV0FBVztBQWdCeEIsZ0JBQWdCO0FBQ2hCLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxNQUFxQztJQUN6RSxPQUFPLE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN6RCxDQUFDO0FBRUQsZ0JBQWdCO0FBQ2hCLE1BQU0sVUFBVSxPQUFPO0lBQ3RCLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO1FBQ2xDLE9BQU8sTUFBTSxDQUFDO0tBQ2Q7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBTc3ZWaWV3cG9ydE1hdGNoZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi92aWV3cG9ydC9pbmRleFwiO1xuaW1wb3J0IHsgVXhPcHRpb25zLCBVWF9ERUZBVUxUX0NPTkZJRywgVVhfQ09ORklHIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tIFwiLi9wbGF0Zm9ybS93aW5kb3dcIjtcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IF9NT0RVTEVfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFV4T3B0aW9ucyB8ICgoKSA9PiBVeE9wdGlvbnMpPihcblx0XCJfdXgtY29uZmlnXCJcbik7XG5cbkBOZ01vZHVsZSh7XG5cdGRlY2xhcmF0aW9uczogW1NzdlZpZXdwb3J0TWF0Y2hlckRpcmVjdGl2ZV0sXG5cdHByb3ZpZGVyczogW1xuXHRcdHsgcHJvdmlkZTogVVhfQ09ORklHLCB1c2VWYWx1ZTogVVhfREVGQVVMVF9DT05GSUcgfSxcblxuXHRcdHsgcHJvdmlkZTogV0lORE9XLCB1c2VGYWN0b3J5OiBfd2luZG93IH0sXG5cdF0sXG5cdGV4cG9ydHM6IFtTc3ZWaWV3cG9ydE1hdGNoZXJEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBTc3ZVeE1vZHVsZSB7XG5cdHN0YXRpYyBmb3JSb290KGNvbmZpZz86IFBhcnRpYWw8VXhPcHRpb25zPiB8ICgoKSA9PiBQYXJ0aWFsPFV4T3B0aW9ucz4pKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5nTW9kdWxlOiBTc3ZVeE1vZHVsZSxcblx0XHRcdHByb3ZpZGVyczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0cHJvdmlkZTogVVhfQ09ORklHLFxuXHRcdFx0XHRcdHVzZUZhY3Rvcnk6IF9tb2R1bGVDb25maWdGYWN0b3J5LFxuXHRcdFx0XHRcdGRlcHM6IFtfTU9EVUxFX0NPTkZJR10sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgcHJvdmlkZTogX01PRFVMRV9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfHwgVVhfREVGQVVMVF9DT05GSUcgfSxcblx0XHRcdF0sXG5cdFx0fTtcblx0fVxufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gX21vZHVsZUNvbmZpZ0ZhY3RvcnkoY29uZmlnOiBVeE9wdGlvbnMgfCAoKCkgPT4gVXhPcHRpb25zKSkge1xuXHRyZXR1cm4gdHlwZW9mIGNvbmZpZyA9PT0gXCJmdW5jdGlvblwiID8gY29uZmlnKCkgOiBjb25maWc7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBfd2luZG93KCk6IGFueSB7XG5cdGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0cmV0dXJuIHdpbmRvdztcblx0fVxuXHRyZXR1cm4ge307XG59Il19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2NpcmNsZWNpL3JlcG8vc3JjLyIsInNvdXJjZXMiOlsibW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQWEsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczQyxnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFZLFlBQVksQ0FBQyxDQUFDO1dBS3hDLGlCQUFpQjtBQUtuRCxNQUFNLE9BQU8sV0FBVztJQUV2QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWdFO1FBQzlFLE9BQU87WUFDTixRQUFRLEVBQUUsV0FBVztZQUNyQixTQUFTLEVBQUU7Z0JBQ1Y7b0JBQ0MsT0FBTyxFQUFFLFNBQVM7b0JBQ2xCLFVBQVUsRUFBRSxvQkFBb0I7b0JBQ2hDLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQztpQkFDdEI7Z0JBQ0QsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7YUFDN0M7U0FDRCxDQUFDO0lBQ0gsQ0FBQzs7O1lBdEJELFFBQVEsU0FBQztnQkFDVCxZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztnQkFDM0MsU0FBUyxFQUFFO29CQUNWLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLElBQW1CLEVBQUU7b0JBQ25ELEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFO2lCQUN4QztnQkFDRCxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUN0Qzs7QUFtQkQsZ0JBQWdCO0FBQ2hCLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxNQUFxQztJQUN6RSxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDO0lBQzFGLE1BQU0sUUFBUSxtQ0FDVixpQkFBaUIsQ0FBQyxRQUFRLEdBQzFCLFNBQVMsQ0FBQyxRQUFRLENBQ3JCLENBQUMsQ0FBQyxrQ0FBa0M7SUFFckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ3JCLENBQUM7QUFFRCxnQkFBZ0I7QUFDaEIsTUFBTSxVQUFVLE9BQU87SUFDdEIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7UUFDbEMsT0FBTyxNQUFNLENBQUM7S0FDZDtJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFNzdlZpZXdwb3J0TWF0Y2hlckRpcmVjdGl2ZSB9IGZyb20gXCIuL3ZpZXdwb3J0L2luZGV4XCI7XG5pbXBvcnQgeyBVeE9wdGlvbnMsIFVYX0RFRkFVTFRfQ09ORklHLCBVWF9DT05GSUcgfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IFdJTkRPVyB9IGZyb20gXCIuL3BsYXRmb3JtL3dpbmRvd1wiO1xuaW1wb3J0IHsgUGFydGlhbERlZXAgfSBmcm9tIFwiLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgX01PRFVMRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48VXhPcHRpb25zPihcIl91eC1jb25maWdcIik7XG5cbkBOZ01vZHVsZSh7XG5cdGRlY2xhcmF0aW9uczogW1NzdlZpZXdwb3J0TWF0Y2hlckRpcmVjdGl2ZV0sXG5cdHByb3ZpZGVyczogW1xuXHRcdHsgcHJvdmlkZTogVVhfQ09ORklHLCB1c2VWYWx1ZTogVVhfREVGQVVMVF9DT05GSUcgfSxcblx0XHR7IHByb3ZpZGU6IFdJTkRPVywgdXNlRmFjdG9yeTogX3dpbmRvdyB9LFxuXHRdLFxuXHRleHBvcnRzOiBbU3N2Vmlld3BvcnRNYXRjaGVyRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU3N2VXhNb2R1bGUge1xuXG5cdHN0YXRpYyBmb3JSb290KGNvbmZpZz86IFBhcnRpYWxEZWVwPFV4T3B0aW9ucz4gfCAoKCkgPT4gUGFydGlhbERlZXA8VXhPcHRpb25zPikpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNzdlV4TW9kdWxlPiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5nTW9kdWxlOiBTc3ZVeE1vZHVsZSxcblx0XHRcdHByb3ZpZGVyczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0cHJvdmlkZTogVVhfQ09ORklHLFxuXHRcdFx0XHRcdHVzZUZhY3Rvcnk6IF9tb2R1bGVDb25maWdGYWN0b3J5LFxuXHRcdFx0XHRcdGRlcHM6IFtfTU9EVUxFX0NPTkZJR10sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgcHJvdmlkZTogX01PRFVMRV9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfSxcblx0XHRcdF0sXG5cdFx0fTtcblx0fVxuXG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBfbW9kdWxlQ29uZmlnRmFjdG9yeShjb25maWc6IFV4T3B0aW9ucyB8ICgoKSA9PiBVeE9wdGlvbnMpKTogVXhPcHRpb25zIHtcblx0Y29uc3QgdXhPcHRpb25zID0gKHR5cGVvZiBjb25maWcgPT09IFwiZnVuY3Rpb25cIiA/IGNvbmZpZygpIDogY29uZmlnKSB8fCBVWF9ERUZBVUxUX0NPTkZJRztcblx0Y29uc3Qgdmlld3BvcnQgPSB7XG5cdFx0Li4uVVhfREVGQVVMVF9DT05GSUcudmlld3BvcnQsXG5cdFx0Li4udXhPcHRpb25zLnZpZXdwb3J0XG5cdH07IC8vIGJyZWFrcG9pbnRzIHNob3VsZG4ndCBiZSBtZXJnZWRcblxuXHRyZXR1cm4geyB2aWV3cG9ydCB9O1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gX3dpbmRvdygpOiB1bmtub3duIHtcblx0aWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRyZXR1cm4gd2luZG93O1xuXHR9XG5cdHJldHVybiB7fTtcbn1cbiJdfQ==

@@ -1,7 +0,8 @@

import * as tslib_1 from "tslib";
import { InjectionToken, Injectable, Inject } from "@angular/core";
import * as i0 from "@angular/core";
export const WINDOW = new InjectionToken("Window");
let WindowRef = class WindowRef {
constructor(window) {
export class WindowRef {
constructor(
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
window) {
this.window = window;

@@ -17,12 +18,12 @@ }

}
};
WindowRef.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function WindowRef_Factory() { return new WindowRef(i0.ɵɵinject(WINDOW)); }, token: WindowRef, providedIn: "root" });
WindowRef = tslib_1.__decorate([
Injectable({
providedIn: "root",
}),
tslib_1.__param(0, Inject(WINDOW)),
tslib_1.__metadata("design:paramtypes", [Object])
], WindowRef);
export { WindowRef };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNzdi9uZ3gudXgvIiwic291cmNlcyI6WyJwbGF0Zm9ybS93aW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFbkUsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBSzNELElBQWEsU0FBUyxHQUF0QixNQUFhLFNBQVM7SUFFckIsWUFDeUIsTUFBVztRQUFYLFdBQU0sR0FBTixNQUFNLENBQUs7SUFFcEMsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxJQUFJLE1BQU07UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDcEIsQ0FBQztJQUVELHNHQUFzRztJQUN0RyxJQUFJLFNBQVM7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0NBRUQsQ0FBQTs7QUFqQlksU0FBUztJQUhyQixVQUFVLENBQUM7UUFDWCxVQUFVLEVBQUUsTUFBTTtLQUNsQixDQUFDO0lBSUMsbUJBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBOztHQUhKLFNBQVMsQ0FpQnJCO1NBakJZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IFdJTkRPVyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxXaW5kb3c+KFwiV2luZG93XCIpO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBXaW5kb3dSZWYge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHdpbmRvdzogYW55XG5cdCkge1xuXHR9XG5cblx0LyoqIFdpbmRvdyB1bmRlcmx5aW5nIG5hdGl2ZSBvYmplY3QuICovXG5cdGdldCBuYXRpdmUoKTogV2luZG93IHtcblx0XHRyZXR1cm4gdGhpcy53aW5kb3c7XG5cdH1cblxuXHQvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIG5hdGl2ZSBlbGVtZW50IGlzIHN1cHBvcnRlZCBvciBub3QuIEdlbmVyYWxseSBgZmFsc2VgIHdoZW4gZXhlY3V0aW5nIGluIFNTUi4gKi9cblx0Z2V0IGhhc05hdGl2ZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm5hdGl2ZS53aW5kb3c7XG5cdH1cblxufSJdfQ==
}
WindowRef.ɵprov = i0.ɵɵdefineInjectable({ factory: function WindowRef_Factory() { return new WindowRef(i0.ɵɵinject(WINDOW)); }, token: WindowRef, providedIn: "root" });
WindowRef.decorators = [
{ type: Injectable, args: [{
providedIn: "root",
},] }
];
WindowRef.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [WINDOW,] }] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2NpcmNsZWNpL3JlcG8vc3JjLyIsInNvdXJjZXMiOlsicGxhdGZvcm0vd2luZG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFbkUsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBSzNELE1BQU0sT0FBTyxTQUFTO0lBRXJCO0lBQ0MsaUhBQWlIO0lBQ3pGLE1BQVc7UUFBWCxXQUFNLEdBQU4sTUFBTSxDQUFLO0lBRXBDLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsSUFBSSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBZ0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsc0dBQXNHO0lBQ3RHLElBQUksU0FBUztRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7Ozs7WUFuQkQsVUFBVSxTQUFDO2dCQUNYLFVBQVUsRUFBRSxNQUFNO2FBQ2xCOzs7NENBS0UsTUFBTSxTQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IFdJTkRPVyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxXaW5kb3c+KFwiV2luZG93XCIpO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBXaW5kb3dSZWYge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55LCBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG5cdFx0QEluamVjdChXSU5ET1cpIHByaXZhdGUgd2luZG93OiBhbnlcblx0KSB7XG5cdH1cblxuXHQvKiogV2luZG93IHVuZGVybHlpbmcgbmF0aXZlIG9iamVjdC4gKi9cblx0Z2V0IG5hdGl2ZSgpOiBXaW5kb3cge1xuXHRcdHJldHVybiB0aGlzLndpbmRvdyBhcyBXaW5kb3c7XG5cdH1cblxuXHQvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIG5hdGl2ZSBlbGVtZW50IGlzIHN1cHBvcnRlZCBvciBub3QuIEdlbmVyYWxseSBgZmFsc2VgIHdoZW4gZXhlY3V0aW5nIGluIFNTUi4gKi9cblx0Z2V0IGhhc05hdGl2ZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm5hdGl2ZS53aW5kb3c7XG5cdH1cblxufVxuIl19

@@ -5,3 +5,4 @@ /**

export * from './index';
export { WINDOW as ɵa, WindowRef as ɵb } from './platform/window';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3N2LW5neC51eC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzc3Yvbmd4LnV4LyIsInNvdXJjZXMiOlsic3N2LW5neC51eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDO0FBRXhCLE9BQU8sRUFBQyxNQUFNLElBQUksRUFBRSxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCB7V0lORE9XIGFzIMm1YSxXaW5kb3dSZWYgYXMgybVifSBmcm9tICcuL3BsYXRmb3JtL3dpbmRvdyc7Il19
export { WINDOW as ɵb, WindowRef as ɵc } from './platform/window';
export { UX_VIEWPORT_DEFAULT_CONFIG as ɵa } from './viewport/viewport.const';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3N2LW5neC51eC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9jaXJjbGVjaS9yZXBvL3NyYy8iLCJzb3VyY2VzIjpbInNzdi1uZ3gudXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQztBQUV4QixPQUFPLEVBQUMsTUFBTSxJQUFJLEVBQUUsRUFBQyxTQUFTLElBQUksRUFBRSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFDLDBCQUEwQixJQUFJLEVBQUUsRUFBQyxNQUFNLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtXSU5ET1cgYXMgybViLFdpbmRvd1JlZiBhcyDJtWN9IGZyb20gJy4vcGxhdGZvcm0vd2luZG93JztcbmV4cG9ydCB7VVhfVklFV1BPUlRfREVGQVVMVF9DT05GSUcgYXMgybVhfSBmcm9tICcuL3ZpZXdwb3J0L3ZpZXdwb3J0LmNvbnN0JzsiXX0=

@@ -1,2 +0,2 @@

export const VERSION = "1.1.1";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzc3Yvbmd4LnV4LyIsInNvdXJjZXMiOlsidmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIjEuMS4xXCI7Il19
export const VERSION = "1.2.0-dev102";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9jaXJjbGVjaS9yZXBvL3NyYy8iLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIxLjIuMC1kZXYxMDJcIjtcbiJdfQ==

@@ -5,3 +5,4 @@ export * from "./viewport-matcher.directive";

export * from "./viewport.service";
export * from "./viewport.util";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3N2L25neC51eC8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3ZpZXdwb3J0LW1hdGNoZXIuZGlyZWN0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aWV3cG9ydC1zZXJ2ZXItc2l6ZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmlld3BvcnQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmlld3BvcnQudXRpbFwiOyJdfQ==
export { isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, COMPARISON_OPERATION_FUNC_MAPPING, generateViewportSizeType, } from "./viewport.util";
export { UX_VIEWPORT_DEFAULT_BREAKPOINTS } from "./viewport.const";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJ2aWV3cG9ydC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLE9BQU8sRUFDTiwrQkFBK0IsRUFDL0Isb0NBQW9DLEVBQ3BDLGlDQUFpQyxFQUNqQyx3QkFBd0IsR0FDeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3ZpZXdwb3J0LW1hdGNoZXIuZGlyZWN0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aWV3cG9ydC1zZXJ2ZXItc2l6ZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmlld3BvcnQuc2VydmljZVwiO1xuZXhwb3J0IHtcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbixcblx0aXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uLFxuXHRDT01QQVJJU09OX09QRVJBVElPTl9GVU5DX01BUFBJTkcsXG5cdGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZSxcbn0gZnJvbSBcIi4vdmlld3BvcnQudXRpbFwiO1xuZXhwb3J0IHsgVVhfVklFV1BPUlRfREVGQVVMVF9CUkVBS1BPSU5UUyB9IGZyb20gXCIuL3ZpZXdwb3J0LmNvbnN0XCI7XG5cbiJdfQ==

@@ -1,4 +0,3 @@

import * as tslib_1 from "tslib";
import { Directive, Renderer2, ViewContainerRef, Input, TemplateRef, ChangeDetectorRef, } from "@angular/core";
import { Subject } from "rxjs";
import { Subscription, Subject } from "rxjs";
import { tap, filter, pairwise, startWith } from "rxjs/operators";

@@ -13,3 +12,3 @@ import { ViewportService } from "./viewport.service";

}
let SsvViewportMatcherDirective = class SsvViewportMatcherDirective {
export class SsvViewportMatcherDirective {
constructor(viewport, renderer, _viewContainer, cdr, templateRef) {

@@ -25,3 +24,5 @@ this.viewport = viewport;

this._elseViewRef = null;
this.update$ = new Subject();
this.sizeType$$ = Subscription.EMPTY;
this.cssClass$$ = Subscription.EMPTY;
this._update$ = new Subject();
this._thenTemplateRef = templateRef;

@@ -31,3 +32,3 @@ }

// console.log("ssvViewportMatcher init");
this.update$$ = this.update$
this._update$
.pipe(

@@ -37,2 +38,3 @@ // tap(x => console.log(">>> ssvViewportMatcher - update triggered", x)),

// tap(x => console.log(">>> ssvViewportMatcher - updating...", x)),
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
tap(() => this._updateView(this.sizeInfo)), tap(() => this.cdr.markForCheck()))

@@ -43,9 +45,10 @@ .subscribe();

// tap(x => console.log("ssvViewportMatcher - sizeType changed", x)),
tap(x => (this.sizeInfo = x)), tap(() => this.update$.next(this._context)))
tap(x => this.sizeInfo = x), tap(() => this._update$.next(this._context)))
.subscribe();
this.cssClass$$ = this.viewport.sizeType$
.pipe(startWith(undefined), filter(() => !!(this._thenViewRef || this._elseViewRef)), pairwise(), tap(([prev, curr]) => {
var _a;
const el = this._thenViewRef
? this._thenViewRef.rootNodes[0]
: this._elseViewRef.rootNodes[0];
: (_a = this._elseViewRef) === null || _a === void 0 ? void 0 : _a.rootNodes[0];
if (!el.classList) {

@@ -57,3 +60,3 @@ return;

}
this.renderer.addClass(el, `ssv-vp-size--${curr.name}`);
this.renderer.addClass(el, `ssv-vp-size--${curr === null || curr === void 0 ? void 0 : curr.name}`);
}))

@@ -63,22 +66,13 @@ .subscribe();

ngOnDestroy() {
if (this.cssClass$$) {
this.cssClass$$.unsubscribe();
}
if (this.sizeType$$) {
this.sizeType$$.unsubscribe();
}
if (this.update$) {
this.update$.complete();
}
if (this.update$$) {
this.update$.unsubscribe();
}
this.cssClass$$.unsubscribe();
this.sizeType$$.unsubscribe();
this._update$.complete();
}
set ssvViewportMatcher(value) {
if (isViewportSizeMatcherExpression(value)) {
this._context.expresson = value;
this._context.expression = value;
}
else if (isViewportSizeMatcherTupleExpression(value)) {
const [op, size] = value;
this._context.expresson = {
this._context.expression = {
operation: op,

@@ -92,3 +86,3 @@ size

if (this.sizeInfo) {
this.update$.next(this._context);
this._update$.next(this._context);
}

@@ -99,3 +93,3 @@ }

if (this.sizeInfo) {
this.update$.next(this._context);
this._update$.next(this._context);
}

@@ -107,7 +101,7 @@ }

if (this.sizeInfo) {
this.update$.next(this._context);
this._update$.next(this._context);
}
}
_updateView(sizeInfo) {
if (isViewportConditionMatch(sizeInfo, this._context)) {
if (isViewportConditionMatch(sizeInfo, this._context, this.viewport.sizeTypeMap)) {
if (!this._thenViewRef) {

@@ -131,30 +125,21 @@ this._viewContainer.clear();

}
}
SsvViewportMatcherDirective.decorators = [
{ type: Directive, args: [{
selector: "[ssvViewportMatcher]",
exportAs: "ssvViewportMatcher",
},] }
];
SsvViewportMatcherDirective.ctorParameters = () => [
{ type: ViewportService },
{ type: Renderer2 },
{ type: ViewContainerRef },
{ type: ChangeDetectorRef },
{ type: TemplateRef }
];
SsvViewportMatcherDirective.propDecorators = {
ssvViewportMatcher: [{ type: Input }],
ssvViewportMatcherExclude: [{ type: Input }],
ssvViewportMatcherElse: [{ type: Input }]
};
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", Object),
tslib_1.__metadata("design:paramtypes", [Object])
], SsvViewportMatcherDirective.prototype, "ssvViewportMatcher", null);
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", Object),
tslib_1.__metadata("design:paramtypes", [Object])
], SsvViewportMatcherDirective.prototype, "ssvViewportMatcherExclude", null);
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", TemplateRef),
tslib_1.__metadata("design:paramtypes", [TemplateRef])
], SsvViewportMatcherDirective.prototype, "ssvViewportMatcherElse", null);
SsvViewportMatcherDirective = tslib_1.__decorate([
Directive({
selector: "[ssvViewportMatcher]",
exportAs: "ssvViewportMatcher",
}),
tslib_1.__metadata("design:paramtypes", [ViewportService,
Renderer2,
ViewContainerRef,
ChangeDetectorRef,
TemplateRef])
], SsvViewportMatcherDirective);
export { SsvViewportMatcherDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtbWF0Y2hlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3N2L25neC51eC8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L3ZpZXdwb3J0LW1hdGNoZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBR04sU0FBUyxFQUNULFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQ04sK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNwQyx3QkFBd0IsRUFDeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixNQUFNLE9BQU8seUJBQXlCO0lBQXRDO1FBQ0MsYUFBUSxHQUE2QixJQUFJLENBQUM7UUFDMUMsb0JBQWUsR0FBNkIsSUFBSSxDQUFDO0lBRWxELENBQUM7Q0FBQTtBQU1ELElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBY3ZDLFlBQ1MsUUFBeUIsRUFDekIsUUFBbUIsRUFDbkIsY0FBZ0MsRUFDaEMsR0FBc0IsRUFDOUIsV0FBbUQ7UUFKM0MsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDaEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFoQnZCLGFBQVEsR0FBOEIsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQ3RFLHFCQUFnQixHQUFrRCxJQUFJLENBQUM7UUFDdkUscUJBQWdCLEdBQWtELElBQUksQ0FBQztRQUN2RSxp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aXJlY3RpdmUsXG5cdFJlbmRlcmVyMixcblx0Vmlld0NvbnRhaW5lclJlZixcblx0SW5wdXQsXG5cdEVtYmVkZGVkVmlld1JlZixcblx0VGVtcGxhdGVSZWYsXG5cdENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRhcCwgZmlsdGVyLCBwYWlyd2lzZSwgc3RhcnRXaXRoIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LnNlcnZpY2VcIjtcbmltcG9ydCB7XG5cdGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24sXG5cdGlzVmlld3BvcnRTaXplTWF0Y2hlclR1cGxlRXhwcmVzc2lvbixcblx0aXNWaWV3cG9ydENvbmRpdGlvbk1hdGNoXG59IGZyb20gXCIuL3ZpZXdwb3J0LnV0aWxcIjtcbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLCBWaWV3cG9ydE1hdGNoQ29uZGl0aW9ucywgVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24gfSBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xuXG5leHBvcnQgY2xhc3MgU3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dCBpbXBsZW1lbnRzIFZpZXdwb3J0TWF0Y2hDb25kaXRpb25zIHtcblx0c2l6ZVR5cGU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cdHNpemVUeXBlRXhjbHVkZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblx0ZXhwcmVzc29uPzogVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb247XG59XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogXCJbc3N2Vmlld3BvcnRNYXRjaGVyXVwiLFxuXHRleHBvcnRBczogXCJzc3ZWaWV3cG9ydE1hdGNoZXJcIixcbn0pXG5leHBvcnQgY2xhc3MgU3N2Vmlld3BvcnRNYXRjaGVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG5cdHByaXZhdGUgX2NvbnRleHQ6IFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQgPSBuZXcgU3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dCgpO1xuXHRwcml2YXRlIF90aGVuVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQ+IHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgX2Vsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8U3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dD4gfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBfdGhlblZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0PiB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIF9lbHNlVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQ+IHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgc2l6ZVR5cGUkJDogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXHRwcml2YXRlIHVwZGF0ZSQkOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cdHByaXZhdGUgY3NzQ2xhc3MkJDogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXHRwcml2YXRlIHVwZGF0ZSQgPSBuZXcgU3ViamVjdDxTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0PigpO1xuXG5cdHNpemVJbmZvOiBWaWV3cG9ydFNpemVUeXBlSW5mbyB8IHVuZGVmaW5lZDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHZpZXdwb3J0OiBWaWV3cG9ydFNlcnZpY2UsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgX3ZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG5cdFx0cHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuXHRcdHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0Pixcblx0KSB7XG5cdFx0dGhpcy5fdGhlblRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHQvLyBjb25zb2xlLmxvZyhcInNzdlZpZXdwb3J0TWF0Y2hlciBpbml0XCIpO1xuXG5cdFx0dGhpcy51cGRhdGUkJCA9IHRoaXMudXBkYXRlJFxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdC8vIHRhcCh4ID0+IGNvbnNvbGUubG9nKFwiPj4+IHNzdlZpZXdwb3J0TWF0Y2hlciAtIHVwZGF0ZSB0cmlnZ2VyZWRcIiwgeCkpLFxuXHRcdFx0XHRmaWx0ZXIoKCkgPT4gISF0aGlzLnNpemVJbmZvKSxcblx0XHRcdFx0Ly8gdGFwKHggPT4gY29uc29sZS5sb2coXCI+Pj4gc3N2Vmlld3BvcnRNYXRjaGVyIC0gdXBkYXRpbmcuLi5cIiwgeCkpLFxuXHRcdFx0XHR0YXAoKCkgPT4gdGhpcy5fdXBkYXRlVmlldyh0aGlzLnNpemVJbmZvISkpLFxuXHRcdFx0XHR0YXAoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKCk7XG5cblx0XHR0aGlzLnNpemVUeXBlJCQgPSB0aGlzLnZpZXdwb3J0LnNpemVUeXBlJFxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdC8vIHRhcCh4ID0+IGNvbnNvbGUubG9nKFwic3N2Vmlld3BvcnRNYXRjaGVyIC0gc2l6ZVR5cGUgY2hhbmdlZFwiLCB4KSksXG5cdFx0XHRcdHRhcCh4ID0+ICh0aGlzLnNpemVJbmZvID0geCkpLFxuXHRcdFx0XHR0YXAoKCkgPT4gdGhpcy51cGRhdGUkLm5leHQodGhpcy5fY29udGV4dCkpLFxuXHRcdFx0KVxuXHRcdFx0LnN1YnNjcmliZSgpO1xuXG5cdFx0dGhpcy5jc3NDbGFzcyQkID0gdGhpcy52aWV3cG9ydC5zaXplVHlwZSRcblx0XHRcdC5waXBlKFxuXHRcdFx0XHRzdGFydFdpdGg8Vmlld3BvcnRTaXplVHlwZUluZm8gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCksXG5cdFx0XHRcdGZpbHRlcigoKSA9PiAhISh0aGlzLl90aGVuVmlld1JlZiB8fCB0aGlzLl9lbHNlVmlld1JlZikpLFxuXHRcdFx0XHRwYWlyd2lzZSgpLFxuXHRcdFx0XHR0YXAoKFtwcmV2LCBjdXJyXSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGVsOiBFbGVtZW50ID0gdGhpcy5fdGhlblZpZXdSZWZcblx0XHRcdFx0XHRcdD8gdGhpcy5fdGhlblZpZXdSZWYucm9vdE5vZGVzWzBdXG5cdFx0XHRcdFx0XHQ6IHRoaXMuX2Vsc2VWaWV3UmVmIS5yb290Tm9kZXNbMF07XG5cblx0XHRcdFx0XHRpZiAoIWVsLmNsYXNzTGlzdCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocHJldikge1xuXHRcdFx0XHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbCwgYHNzdi12cC1zaXplLS0ke3ByZXYubmFtZX1gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbCwgYHNzdi12cC1zaXplLS0ke2N1cnIhLm5hbWV9YCk7XG5cdFx0XHRcdH0pLFxuXHRcdFx0KVxuXHRcdFx0LnN1YnNjcmliZSgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0aWYgKHRoaXMuY3NzQ2xhc3MkJCkge1xuXHRcdFx0dGhpcy5jc3NDbGFzcyQkLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnNpemVUeXBlJCQpIHtcblx0XHRcdHRoaXMuc2l6ZVR5cGUkJC51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHRpZiAodGhpcy51cGRhdGUkKSB7XG5cdFx0XHR0aGlzLnVwZGF0ZSQuY29tcGxldGUoKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMudXBkYXRlJCQpIHtcblx0XHRcdHRoaXMudXBkYXRlJC51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxuXG5cdEBJbnB1dCgpIHNldCBzc3ZWaWV3cG9ydE1hdGNoZXIodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24pIHtcblx0XHRpZiAoaXNWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbih2YWx1ZSkpIHtcblx0XHRcdHRoaXMuX2NvbnRleHQuZXhwcmVzc29uID0gdmFsdWU7XG5cdFx0fSBlbHNlIGlmIChpc1ZpZXdwb3J0U2l6ZU1hdGNoZXJUdXBsZUV4cHJlc3Npb24odmFsdWUpKSB7XG5cdFx0XHRjb25zdCBbb3AsIHNpemVdID0gdmFsdWU7XG5cdFx0XHR0aGlzLl9jb250ZXh0LmV4cHJlc3NvbiA9IHtcblx0XHRcdFx0b3BlcmF0aW9uOiBvcCxcblx0XHRcdFx0c2l6ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fY29udGV4dC5zaXplVHlwZSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNpemVJbmZvKSB7XG5cdFx0XHR0aGlzLnVwZGF0ZSQubmV4dCh0aGlzLl9jb250ZXh0KTtcblx0XHR9XG5cdH1cblxuXHRASW5wdXQoKSBzZXQgc3N2Vmlld3BvcnRNYXRjaGVyRXhjbHVkZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcblx0XHR0aGlzLl9jb250ZXh0LnNpemVUeXBlRXhjbHVkZSA9IHZhbHVlO1xuXG5cdFx0aWYgKHRoaXMuc2l6ZUluZm8pIHtcblx0XHRcdHRoaXMudXBkYXRlJC5uZXh0KHRoaXMuX2NvbnRleHQpO1xuXHRcdH1cblx0fVxuXG5cdEBJbnB1dCgpIHNldCBzc3ZWaWV3cG9ydE1hdGNoZXJFbHNlKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0PiB8IG51bGwpIHtcblx0XHR0aGlzLl9lbHNlVGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcblx0XHR0aGlzLl9lbHNlVmlld1JlZiA9IG51bGw7IC8vIGNsZWFyIHByZXZpb3VzIHZpZXcgaWYgYW55LlxuXHRcdGlmICh0aGlzLnNpemVJbmZvKSB7XG5cdFx0XHR0aGlzLnVwZGF0ZSQubmV4dCh0aGlzLl9jb250ZXh0KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF91cGRhdGVWaWV3KHNpemVJbmZvOiBWaWV3cG9ydFNpemVUeXBlSW5mbykge1xuXHRcdGlmIChpc1ZpZXdwb3J0Q29uZGl0aW9uTWF0Y2goc2l6ZUluZm8sIHRoaXMuX2NvbnRleHQpKSB7XG5cdFx0XHRpZiAoIXRoaXMuX3RoZW5WaWV3UmVmKSB7XG5cdFx0XHRcdHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKTtcblx0XHRcdFx0dGhpcy5fZWxzZVZpZXdSZWYgPSBudWxsO1xuXG5cdFx0XHRcdGlmICh0aGlzLl90aGVuVGVtcGxhdGVSZWYpIHtcblx0XHRcdFx0XHR0aGlzLl90aGVuVmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KFxuXHRcdFx0XHRcdFx0dGhpcy5fdGhlblRlbXBsYXRlUmVmLFxuXHRcdFx0XHRcdFx0dGhpcy5fY29udGV4dCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICghdGhpcy5fZWxzZVZpZXdSZWYpIHtcblx0XHRcdFx0dGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpO1xuXHRcdFx0XHR0aGlzLl90aGVuVmlld1JlZiA9IG51bGw7XG5cblx0XHRcdFx0aWYgKHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZikge1xuXHRcdFx0XHRcdHRoaXMuX2Vsc2VWaWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoXG5cdFx0XHRcdFx0XHR0aGlzLl9lbHNlVGVtcGxhdGVSZWYsXG5cdFx0XHRcdFx0XHR0aGlzLl9jb250ZXh0LFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxufVxuXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtbWF0Y2hlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJ2aWV3cG9ydC92aWV3cG9ydC1tYXRjaGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR04sU0FBUyxFQUNULFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsS0FBSyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQ04sK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNwQyx3QkFBd0IsRUFDeEIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixNQUFNLE9BQU8seUJBQXlCO0lBQXRDO1FBRUMsYUFBUSxHQUE2QixJQUFJLENBQUM7UUFDMUMsb0JBQWUsR0FBNkIsSUFBSSxDQUFDO0lBR2xELENBQUM7Q0FBQTtBQU1ELE1BQU0sT0FBTywyQkFBMkI7SUFhdkMsWUFDUyxRQUF5QixFQUN6QixRQUFtQixFQUNuQixjQUFnQyxFQUNoQyxHQUFzQixFQUM5QixXQUFtRDtRQUozQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWJ2QixhQUFRLEdBQThCLElBQUkseUJBQXlCLEVBQUUsQ0FBQztRQUN0RSxxQkFBZ0IsR0FBa0QsSUFBSSxDQUFDO1FBQ3ZFLHFCQUFnQixHQUFrRCxJQUFJLENBQUM7UUFDdkUs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Q0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUV6QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUN6RCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxRQUFRLENBQ2IsQ0FBQztpQkFDRjthQUNEO1NBQ0Q7YUFBTTtZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFFekIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FDekQsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsUUFBUSxDQUNiLENBQUM7aUJBQ0Y7YUFDRDtTQUNEO0lBQ0YsQ0FBQzs7O1lBeklELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxRQUFRLEVBQUUsb0JBQW9CO2FBQzlCOzs7WUFuQlEsZUFBZTtZQVZ2QixTQUFTO1lBQ1QsZ0JBQWdCO1lBSWhCLGlCQUFpQjtZQURqQixXQUFXOzs7aUNBbUdWLEtBQUs7d0NBa0JMLEtBQUs7cUNBUUwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdE9uSW5pdCxcblx0T25EZXN0cm95LFxuXHREaXJlY3RpdmUsXG5cdFJlbmRlcmVyMixcblx0Vmlld0NvbnRhaW5lclJlZixcblx0SW5wdXQsXG5cdEVtYmVkZGVkVmlld1JlZixcblx0VGVtcGxhdGVSZWYsXG5cdENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRhcCwgZmlsdGVyLCBwYWlyd2lzZSwgc3RhcnRXaXRoIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gXCIuL3ZpZXdwb3J0LnNlcnZpY2VcIjtcbmltcG9ydCB7XG5cdGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24sXG5cdGlzVmlld3BvcnRTaXplTWF0Y2hlclR1cGxlRXhwcmVzc2lvbixcblx0aXNWaWV3cG9ydENvbmRpdGlvbk1hdGNoXG59IGZyb20gXCIuL3ZpZXdwb3J0LnV0aWxcIjtcbmltcG9ydCB7IFZpZXdwb3J0U2l6ZVR5cGVJbmZvLCBWaWV3cG9ydE1hdGNoQ29uZGl0aW9ucywgVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24gfSBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xuXG5leHBvcnQgY2xhc3MgU3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dCBpbXBsZW1lbnRzIFZpZXdwb3J0TWF0Y2hDb25kaXRpb25zIHtcblxuXHRzaXplVHlwZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblx0c2l6ZVR5cGVFeGNsdWRlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xuXHRleHByZXNzaW9uPzogVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb247XG5cbn1cblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiBcIltzc3ZWaWV3cG9ydE1hdGNoZXJdXCIsXG5cdGV4cG9ydEFzOiBcInNzdlZpZXdwb3J0TWF0Y2hlclwiLFxufSlcbmV4cG9ydCBjbGFzcyBTc3ZWaWV3cG9ydE1hdGNoZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0c2l6ZUluZm86IFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgX2NvbnRleHQ6IFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQgPSBuZXcgU3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dCgpO1xuXHRwcml2YXRlIF90aGVuVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQ+IHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgX2Vsc2VUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8U3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dD4gfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBfdGhlblZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0PiB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIF9lbHNlVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQ+IHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgc2l6ZVR5cGUkJCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblx0cHJpdmF0ZSBjc3NDbGFzcyQkID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXHRwcml2YXRlIHJlYWRvbmx5IF91cGRhdGUkID0gbmV3IFN1YmplY3Q8U3N2Vmlld3BvcnRNYXRjaGVyQ29udGV4dD4oKTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHZpZXdwb3J0OiBWaWV3cG9ydFNlcnZpY2UsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgX3ZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG5cdFx0cHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuXHRcdHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxTc3ZWaWV3cG9ydE1hdGNoZXJDb250ZXh0Pixcblx0KSB7XG5cdFx0dGhpcy5fdGhlblRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHQvLyBjb25zb2xlLmxvZyhcInNzdlZpZXdwb3J0TWF0Y2hlciBpbml0XCIpO1xuXG5cdFx0dGhpcy5fdXBkYXRlJFxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdC8vIHRhcCh4ID0+IGNvbnNvbGUubG9nKFwiPj4+IHNzdlZpZXdwb3J0TWF0Y2hlciAtIHVwZGF0ZSB0cmlnZ2VyZWRcIiwgeCkpLFxuXHRcdFx0XHRmaWx0ZXIoKCkgPT4gISF0aGlzLnNpemVJbmZvKSxcblx0XHRcdFx0Ly8gdGFwKHggPT4gY29uc29sZS5sb2coXCI+Pj4gc3N2Vmlld3BvcnRNYXRjaGVyIC0gdXBkYXRpbmcuLi5cIiwgeCkpLFxuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuXHRcdFx0XHR0YXAoKCkgPT4gdGhpcy5fdXBkYXRlVmlldyh0aGlzLnNpemVJbmZvISkpLFxuXHRcdFx0XHR0YXAoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKCk7XG5cblx0XHR0aGlzLnNpemVUeXBlJCQgPSB0aGlzLnZpZXdwb3J0LnNpemVUeXBlJFxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdC8vIHRhcCh4ID0+IGNvbnNvbGUubG9nKFwic3N2Vmlld3BvcnRNYXRjaGVyIC0gc2l6ZVR5cGUgY2hhbmdlZFwiLCB4KSksXG5cdFx0XHRcdHRhcCh4ID0+IHRoaXMuc2l6ZUluZm8gPSB4KSxcblx0XHRcdFx0dGFwKCgpID0+IHRoaXMuX3VwZGF0ZSQubmV4dCh0aGlzLl9jb250ZXh0KSksXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKCk7XG5cblx0XHR0aGlzLmNzc0NsYXNzJCQgPSB0aGlzLnZpZXdwb3J0LnNpemVUeXBlJFxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdHN0YXJ0V2l0aDxWaWV3cG9ydFNpemVUeXBlSW5mbyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKSxcblx0XHRcdFx0ZmlsdGVyKCgpID0+ICEhKHRoaXMuX3RoZW5WaWV3UmVmIHx8IHRoaXMuX2Vsc2VWaWV3UmVmKSksXG5cdFx0XHRcdHBhaXJ3aXNlKCksXG5cdFx0XHRcdHRhcCgoW3ByZXYsIGN1cnJdKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgZWw6IEVsZW1lbnQgPSB0aGlzLl90aGVuVmlld1JlZlxuXHRcdFx0XHRcdFx0PyB0aGlzLl90aGVuVmlld1JlZi5yb290Tm9kZXNbMF1cblx0XHRcdFx0XHRcdDogdGhpcy5fZWxzZVZpZXdSZWY/LnJvb3ROb2Rlc1swXTtcblxuXHRcdFx0XHRcdGlmICghZWwuY2xhc3NMaXN0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChwcmV2KSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsLCBgc3N2LXZwLXNpemUtLSR7cHJldi5uYW1lfWApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsLCBgc3N2LXZwLXNpemUtLSR7Y3Vycj8ubmFtZX1gKTtcblx0XHRcdFx0fSksXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLmNzc0NsYXNzJCQudW5zdWJzY3JpYmUoKTtcblx0XHR0aGlzLnNpemVUeXBlJCQudW5zdWJzY3JpYmUoKTtcblx0XHR0aGlzLl91cGRhdGUkLmNvbXBsZXRlKCk7XG5cdH1cblxuXHRASW5wdXQoKSBzZXQgc3N2Vmlld3BvcnRNYXRjaGVyKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uKSB7XG5cdFx0aWYgKGlzVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24odmFsdWUpKSB7XG5cdFx0XHR0aGlzLl9jb250ZXh0LmV4cHJlc3Npb24gPSB2YWx1ZTtcblx0XHR9IGVsc2UgaWYgKGlzVmlld3BvcnRTaXplTWF0Y2hlclR1cGxlRXhwcmVzc2lvbih2YWx1ZSkpIHtcblx0XHRcdGNvbnN0IFtvcCwgc2l6ZV0gPSB2YWx1ZTtcblx0XHRcdHRoaXMuX2NvbnRleHQuZXhwcmVzc2lvbiA9IHtcblx0XHRcdFx0b3BlcmF0aW9uOiBvcCxcblx0XHRcdFx0c2l6ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fY29udGV4dC5zaXplVHlwZSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNpemVJbmZvKSB7XG5cdFx0XHR0aGlzLl91cGRhdGUkLm5leHQodGhpcy5fY29udGV4dCk7XG5cdFx0fVxuXHR9XG5cblx0QElucHV0KCkgc2V0IHNzdlZpZXdwb3J0TWF0Y2hlckV4Y2x1ZGUodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG5cdFx0dGhpcy5fY29udGV4dC5zaXplVHlwZUV4Y2x1ZGUgPSB2YWx1ZTtcblxuXHRcdGlmICh0aGlzLnNpemVJbmZvKSB7XG5cdFx0XHR0aGlzLl91cGRhdGUkLm5leHQodGhpcy5fY29udGV4dCk7XG5cdFx0fVxuXHR9XG5cblx0QElucHV0KCkgc2V0IHNzdlZpZXdwb3J0TWF0Y2hlckVsc2UodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPFNzdlZpZXdwb3J0TWF0Y2hlckNvbnRleHQ+IHwgbnVsbCkge1xuXHRcdHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuXHRcdHRoaXMuX2Vsc2VWaWV3UmVmID0gbnVsbDsgLy8gY2xlYXIgcHJldmlvdXMgdmlldyBpZiBhbnkuXG5cdFx0aWYgKHRoaXMuc2l6ZUluZm8pIHtcblx0XHRcdHRoaXMuX3VwZGF0ZSQubmV4dCh0aGlzLl9jb250ZXh0KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF91cGRhdGVWaWV3KHNpemVJbmZvOiBWaWV3cG9ydFNpemVUeXBlSW5mbykge1xuXHRcdGlmIChpc1ZpZXdwb3J0Q29uZGl0aW9uTWF0Y2goc2l6ZUluZm8sIHRoaXMuX2NvbnRleHQsIHRoaXMudmlld3BvcnQuc2l6ZVR5cGVNYXApKSB7XG5cdFx0XHRpZiAoIXRoaXMuX3RoZW5WaWV3UmVmKSB7XG5cdFx0XHRcdHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKTtcblx0XHRcdFx0dGhpcy5fZWxzZVZpZXdSZWYgPSBudWxsO1xuXG5cdFx0XHRcdGlmICh0aGlzLl90aGVuVGVtcGxhdGVSZWYpIHtcblx0XHRcdFx0XHR0aGlzLl90aGVuVmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KFxuXHRcdFx0XHRcdFx0dGhpcy5fdGhlblRlbXBsYXRlUmVmLFxuXHRcdFx0XHRcdFx0dGhpcy5fY29udGV4dCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICghdGhpcy5fZWxzZVZpZXdSZWYpIHtcblx0XHRcdFx0dGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpO1xuXHRcdFx0XHR0aGlzLl90aGVuVmlld1JlZiA9IG51bGw7XG5cblx0XHRcdFx0aWYgKHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZikge1xuXHRcdFx0XHRcdHRoaXMuX2Vsc2VWaWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoXG5cdFx0XHRcdFx0XHR0aGlzLl9lbHNlVGVtcGxhdGVSZWYsXG5cdFx0XHRcdFx0XHR0aGlzLl9jb250ZXh0LFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxufVxuIl19

@@ -1,2 +0,1 @@

import * as tslib_1 from "tslib";
import { Injectable, Inject, InjectionToken, Optional } from "@angular/core";

@@ -22,3 +21,3 @@ import { DeviceType } from "./viewport.model";

export const UX_VIEWPORT_SSR_DEVICE = new InjectionToken("@ssv/ngx.ux-config/viewport/ssr-device");
let ViewportServerSizeService = class ViewportServerSizeService {
export class ViewportServerSizeService {
constructor(deviceType) {

@@ -28,18 +27,14 @@ this.deviceType = deviceType;

get() {
let size = viewportSizeSSR[this.deviceType];
if (!size) {
size = viewportSizeSSR[DeviceType.desktop];
}
return size;
return viewportSizeSSR[this.deviceType] || viewportSizeSSR[DeviceType.desktop];
}
};
ViewportServerSizeService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ViewportServerSizeService_Factory() { return new ViewportServerSizeService(i0.ɵɵinject(UX_VIEWPORT_SSR_DEVICE, 8)); }, token: ViewportServerSizeService, providedIn: "root" });
ViewportServerSizeService = tslib_1.__decorate([
Injectable({
providedIn: "root",
}),
tslib_1.__param(0, Optional()), tslib_1.__param(0, Inject(UX_VIEWPORT_SSR_DEVICE)),
tslib_1.__metadata("design:paramtypes", [String])
], ViewportServerSizeService);
export { ViewportServerSizeService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtc2VydmVyLXNpemUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzc3Yvbmd4LnV4LyIsInNvdXJjZXMiOlsidmlld3BvcnQvdmlld3BvcnQtc2VydmVyLXNpemUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RSxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLGtCQUFrQixDQUFDOztBQUc1RCwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLE1BQU0sZUFBZSxHQUE2QjtJQUNqRCxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNyQixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxHQUFHO0tBQ1g7SUFDRCxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwQixLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxJQUFJO0tBQ1o7SUFDRCxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwQixLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxHQUFHO0tBQ1g7Q0FDRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQVksd0NBQXdDLENBQUMsQ0FBQztBQUs5RyxJQUFhLHlCQUF5QixHQUF0QyxNQUFhLHlCQUF5QjtJQUVyQyxZQUNxRCxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBRTNFLENBQUM7SUFFRCxHQUFHO1FBQ0YsSUFBSSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1YsSUFBSSxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0M7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7Q0FDRCxDQUFBOztBQWRZLHlCQUF5QjtJQUhyQyxVQUFVLENBQUM7UUFDWCxVQUFVLEVBQUUsTUFBTTtLQUNsQixDQUFDO0lBSUMsbUJBQUEsUUFBUSxFQUFFLENBQUEsRUFBRSxtQkFBQSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQTs7R0FIaEMseUJBQXlCLENBY3JDO1NBZFkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uL2ludGVybmFsL2ludGVybmFsLm1vZGVsXCI7XG5pbXBvcnQgeyBEZXZpY2VUeXBlLCBWaWV3cG9ydFNpemUgfSBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xuaW1wb3J0IHsgVXhPcHRpb25zIH0gZnJvbSBcIi4uL2NvbmZpZ1wiO1xuXG4vLyB0b2RvOiBtYWtlIHRoaXMgY29uZmlndXJhYmxlXG4vKiogVmlld3BvcnQgc2l6ZSBmb3IgU1NSLiAqL1xuY29uc3Qgdmlld3BvcnRTaXplU1NSOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZT4gPSB7XG5cdFtEZXZpY2VUeXBlLmRlc2t0b3BdOiB7XG5cdFx0d2lkdGg6IDEzNjYsXG5cdFx0aGVpZ2h0OiA3NjgsXG5cdH0sXG5cdFtEZXZpY2VUeXBlLnRhYmxldF06IHtcblx0XHR3aWR0aDogNzY4LFxuXHRcdGhlaWdodDogMTAyNCxcblx0fSxcblx0W0RldmljZVR5cGUubW9iaWxlXToge1xuXHRcdHdpZHRoOiA0MTQsXG5cdFx0aGVpZ2h0OiA3MzYsXG5cdH0sXG59O1xuXG5leHBvcnQgY29uc3QgVVhfVklFV1BPUlRfU1NSX0RFVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVeE9wdGlvbnM+KFwiQHNzdi9uZ3gudXgtY29uZmlnL3ZpZXdwb3J0L3Nzci1kZXZpY2VcIik7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2Uge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBPcHRpb25hbCgpIEBJbmplY3QoVVhfVklFV1BPUlRfU1NSX0RFVklDRSkgcHJpdmF0ZSBkZXZpY2VUeXBlOiBEZXZpY2VUeXBlLFxuXHQpIHtcblx0fVxuXG5cdGdldCgpOiBWaWV3cG9ydFNpemUge1xuXHRcdGxldCBzaXplID0gdmlld3BvcnRTaXplU1NSW3RoaXMuZGV2aWNlVHlwZV07XG5cdFx0aWYgKCFzaXplKSB7XG5cdFx0XHRzaXplID0gdmlld3BvcnRTaXplU1NSW0RldmljZVR5cGUuZGVza3RvcF07XG5cdFx0fVxuXHRcdHJldHVybiBzaXplO1xuXHR9XG59XG4iXX0=
}
ViewportServerSizeService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ViewportServerSizeService_Factory() { return new ViewportServerSizeService(i0.ɵɵinject(UX_VIEWPORT_SSR_DEVICE, 8)); }, token: ViewportServerSizeService, providedIn: "root" });
ViewportServerSizeService.decorators = [
{ type: Injectable, args: [{
providedIn: "root",
},] }
];
ViewportServerSizeService.ctorParameters = () => [
{ type: DeviceType, decorators: [{ type: Optional }, { type: Inject, args: [UX_VIEWPORT_SSR_DEVICE,] }] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtc2VydmVyLXNpemUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9jaXJjbGVjaS9yZXBvL3NyYy8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L3ZpZXdwb3J0LXNlcnZlci1zaXplLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RSxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLGtCQUFrQixDQUFDOztBQUc1RCwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLE1BQU0sZUFBZSxHQUE2QjtJQUNqRCxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNyQixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxHQUFHO0tBQ1g7SUFDRCxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwQixLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxJQUFJO0tBQ1o7SUFDRCxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwQixLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxHQUFHO0tBQ1g7Q0FDRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQVksd0NBQXdDLENBQUMsQ0FBQztBQUs5RyxNQUFNLE9BQU8seUJBQXlCO0lBRXJDLFlBQ3FELFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFFM0UsQ0FBQztJQUVELEdBQUc7UUFDRixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRixDQUFDOzs7O1lBWkQsVUFBVSxTQUFDO2dCQUNYLFVBQVUsRUFBRSxNQUFNO2FBQ2xCOzs7WUF4QlEsVUFBVSx1QkE0QmhCLFFBQVEsWUFBSSxNQUFNLFNBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uL2ludGVybmFsL2ludGVybmFsLm1vZGVsXCI7XG5pbXBvcnQgeyBEZXZpY2VUeXBlLCBWaWV3cG9ydFNpemUgfSBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xuaW1wb3J0IHsgVXhPcHRpb25zIH0gZnJvbSBcIi4uL2NvbmZpZ1wiO1xuXG4vLyB0b2RvOiBtYWtlIHRoaXMgY29uZmlndXJhYmxlXG4vKiogVmlld3BvcnQgc2l6ZSBmb3IgU1NSLiAqL1xuY29uc3Qgdmlld3BvcnRTaXplU1NSOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZT4gPSB7XG5cdFtEZXZpY2VUeXBlLmRlc2t0b3BdOiB7XG5cdFx0d2lkdGg6IDEzNjYsXG5cdFx0aGVpZ2h0OiA3NjgsXG5cdH0sXG5cdFtEZXZpY2VUeXBlLnRhYmxldF06IHtcblx0XHR3aWR0aDogNzY4LFxuXHRcdGhlaWdodDogMTAyNCxcblx0fSxcblx0W0RldmljZVR5cGUubW9iaWxlXToge1xuXHRcdHdpZHRoOiA0MTQsXG5cdFx0aGVpZ2h0OiA3MzYsXG5cdH0sXG59O1xuXG5leHBvcnQgY29uc3QgVVhfVklFV1BPUlRfU1NSX0RFVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVeE9wdGlvbnM+KFwiQHNzdi9uZ3gudXgtY29uZmlnL3ZpZXdwb3J0L3Nzci1kZXZpY2VcIik7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2Uge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBPcHRpb25hbCgpIEBJbmplY3QoVVhfVklFV1BPUlRfU1NSX0RFVklDRSkgcHJpdmF0ZSBkZXZpY2VUeXBlOiBEZXZpY2VUeXBlLFxuXHQpIHtcblx0fVxuXG5cdGdldCgpOiBWaWV3cG9ydFNpemUge1xuXHRcdHJldHVybiB2aWV3cG9ydFNpemVTU1JbdGhpcy5kZXZpY2VUeXBlXSB8fCB2aWV3cG9ydFNpemVTU1JbRGV2aWNlVHlwZS5kZXNrdG9wXTtcblx0fVxuXG59XG4iXX0=

@@ -0,4 +1,15 @@

/** Default viewport breakpoints. */
export const UX_VIEWPORT_DEFAULT_BREAKPOINTS = {
xsmall: 450,
small: 767,
medium: 992,
large: 1200,
xlarge: 1500,
xxlarge: 1920,
xxlarge1: 2100,
};
export const UX_VIEWPORT_DEFAULT_CONFIG = {
resizePollingSpeed: 33
resizePollingSpeed: 33,
breakpoints: UX_VIEWPORT_DEFAULT_BREAKPOINTS
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuY29uc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3N2L25neC51eC8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L3ZpZXdwb3J0LmNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFzQjtJQUM1RCxrQkFBa0IsRUFBRSxFQUFFO0NBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVeFZpZXdwb3J0T3B0aW9ucyB9IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XG5cbmV4cG9ydCBjb25zdCBVWF9WSUVXUE9SVF9ERUZBVUxUX0NPTkZJRzogVXhWaWV3cG9ydE9wdGlvbnMgPSB7XG5cdHJlc2l6ZVBvbGxpbmdTcGVlZDogMzNcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuY29uc3QuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJ2aWV3cG9ydC92aWV3cG9ydC5jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQXVCO0lBQ2xFLE1BQU0sRUFBRSxHQUFHO0lBQ1gsS0FBSyxFQUFFLEdBQUc7SUFDVixNQUFNLEVBQUUsR0FBRztJQUNYLEtBQUssRUFBRSxJQUFJO0lBQ1gsTUFBTSxFQUFFLElBQUk7SUFDWixPQUFPLEVBQUUsSUFBSTtJQUNiLFFBQVEsRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFzQjtJQUM1RCxrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLFdBQVcsRUFBRSwrQkFBK0I7Q0FDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tIFwiLi4vaW50ZXJuYWwvaW50ZXJuYWwubW9kZWxcIjtcbmltcG9ydCB7IFV4Vmlld3BvcnRPcHRpb25zIH0gZnJvbSBcIi4vdmlld3BvcnQubW9kZWxcIjtcblxuLyoqIERlZmF1bHQgdmlld3BvcnQgYnJlYWtwb2ludHMuICovXG5leHBvcnQgY29uc3QgVVhfVklFV1BPUlRfREVGQVVMVF9CUkVBS1BPSU5UUzogRGljdGlvbmFyeTxudW1iZXI+ID0ge1xuXHR4c21hbGw6IDQ1MCxcblx0c21hbGw6IDc2Nyxcblx0bWVkaXVtOiA5OTIsXG5cdGxhcmdlOiAxMjAwLFxuXHR4bGFyZ2U6IDE1MDAsXG5cdHh4bGFyZ2U6IDE5MjAsXG5cdHh4bGFyZ2UxOiAyMTAwLFxufTtcblxuZXhwb3J0IGNvbnN0IFVYX1ZJRVdQT1JUX0RFRkFVTFRfQ09ORklHOiBVeFZpZXdwb3J0T3B0aW9ucyA9IHtcblx0cmVzaXplUG9sbGluZ1NwZWVkOiAzMyxcblx0YnJlYWtwb2ludHM6IFVYX1ZJRVdQT1JUX0RFRkFVTFRfQlJFQUtQT0lOVFNcbn07XG4iXX0=

@@ -0,1 +1,5 @@

/**
* The indices of each breakpoint provided based on the `UX_VIEWPORT_DEFAULT_BREAKPOINTS`.
* @see UX_VIEWPORT_DEFAULT_BREAKPOINTS
*/
export var ViewportSizeType;

@@ -26,2 +30,2 @@ (function (ViewportSizeType) {

})(DeviceType || (DeviceType = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQubW9kZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3N2L25neC51eC8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L3ZpZXdwb3J0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sQ0FBTixJQUFZLGdCQVFYO0FBUkQsV0FBWSxnQkFBZ0I7SUFDM0IsMkRBQVUsQ0FBQTtJQUNWLHlEQUFTLENBQUE7SUFDVCwyREFBVSxDQUFBO0lBQ1YseURBQVMsQ0FBQTtJQUNULDJEQUFVLENBQUE7SUFDViw2REFBVyxDQUFBO0lBQ1gsK0RBQVksQ0FBQTtBQUNiLENBQUMsRUFSVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBUTNCO0FBUUQsTUFBTSxDQUFOLElBQVksbUJBT1g7QUFQRCxXQUFZLG1CQUFtQjtJQUM5QixtQ0FBWSxDQUFBO0lBQ1osdUNBQWdCLENBQUE7SUFDaEIscUNBQWMsQ0FBQTtJQUNkLDZDQUFzQixDQUFBO0lBQ3RCLHdDQUFpQixDQUFBO0lBQ2pCLGdEQUF5QixDQUFBO0FBQzFCLENBQUMsRUFQVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBTzlCO0FBRUQsTUFBTSxDQUFOLElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNyQixpQ0FBbUIsQ0FBQTtJQUNuQiwrQkFBaUIsQ0FBQTtJQUNqQiwrQkFBaUIsQ0FBQTtBQUNsQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0U2l6ZSB7XG5cdHdpZHRoOiBudW1iZXI7XG5cdGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBWaWV3cG9ydFNpemVUeXBlIHtcblx0eHNtYWxsID0gMCxcblx0c21hbGwgPSAxLFxuXHRtZWRpdW0gPSAyLFxuXHRsYXJnZSA9IDMsXG5cdHhsYXJnZSA9IDQsXG5cdHh4bGFyZ2UgPSA1LFxuXHR4eGxhcmdlMSA9IDZcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydFNpemVUeXBlSW5mbyB7XG5cdHR5cGU6IFZpZXdwb3J0U2l6ZVR5cGU7XG5cdG5hbWU6IHN0cmluZztcblx0d2lkdGhUaHJlc2hvbGQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gQ29tcGFyaXNvbk9wZXJhdGlvbiB7XG5cdGVxdWFscyA9IFwiPVwiLFxuXHRub3RFcXVhbHMgPSBcIjw+XCIsXG5cdGxlc3NUaGFuID0gXCI8XCIsXG5cdGxlc3NPckVxdWFsVGhhbiA9IFwiPD1cIixcblx0Z3JlYXRlclRoYW4gPSBcIj5cIixcblx0Z3JlYXRlck9yRXF1YWxUaGFuID0gXCI+PVwiLFxufVxuXG5leHBvcnQgZW51bSBEZXZpY2VUeXBlIHtcblx0ZGVza3RvcCA9IFwiZGVza3RvcFwiLFxuXHRtb2JpbGUgPSBcIm1vYmlsZVwiLFxuXHR0YWJsZXQgPSBcInRhYmxldFwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXhWaWV3cG9ydE9wdGlvbnMge1xuXHQvKiogUG9sbGluZyBzcGVlZCBvbiByZXNpemluZyAoaW4gbWlsbGlzZWNvbmRzKS4gZS5nLiB0aGUgaGlnaGVyIHRoZSBudW1iZXIgdGhlIGxvbmdlciBpdCB0YWtlcyB0byByZWNhbGN1bGF0ZS4gKi9cblx0cmVzaXplUG9sbGluZ1NwZWVkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRNYXRjaENvbmRpdGlvbnMge1xuXHRzaXplVHlwZT86IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbDtcblx0c2l6ZVR5cGVFeGNsdWRlPzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsO1xuXHRleHByZXNzb24/OiBWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbiB7XG5cdHNpemU6IHN0cmluZztcblx0b3BlcmF0aW9uOiBDb21wYXJpc29uT3BlcmF0aW9uO1xufSJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvY2lyY2xlY2kvcmVwby9zcmMvIiwic291cmNlcyI6WyJ2aWV3cG9ydC92aWV3cG9ydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxnQkFRWDtBQVJELFdBQVksZ0JBQWdCO0lBQzNCLDJEQUFVLENBQUE7SUFDVix5REFBUyxDQUFBO0lBQ1QsMkRBQVUsQ0FBQTtJQUNWLHlEQUFTLENBQUE7SUFDVCwyREFBVSxDQUFBO0lBQ1YsNkRBQVcsQ0FBQTtJQUNYLCtEQUFZLENBQUE7QUFDYixDQUFDLEVBUlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVEzQjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQU9YO0FBUEQsV0FBWSxtQkFBbUI7SUFDOUIsbUNBQVksQ0FBQTtJQUNaLHVDQUFnQixDQUFBO0lBQ2hCLHFDQUFjLENBQUE7SUFDZCw2Q0FBc0IsQ0FBQTtJQUN0Qix3Q0FBaUIsQ0FBQTtJQUNqQixnREFBeUIsQ0FBQTtBQUMxQixDQUFDLEVBUFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQU85QjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDckIsaUNBQW1CLENBQUE7SUFDbkIsK0JBQWlCLENBQUE7SUFDakIsK0JBQWlCLENBQUE7QUFDbEIsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xuXG4vKipcbiAqIFRoZSBpbmRpY2VzIG9mIGVhY2ggYnJlYWtwb2ludCBwcm92aWRlZCBiYXNlZCBvbiB0aGUgYFVYX1ZJRVdQT1JUX0RFRkFVTFRfQlJFQUtQT0lOVFNgLlxuICogQHNlZSBVWF9WSUVXUE9SVF9ERUZBVUxUX0JSRUFLUE9JTlRTXG4gKi9cbmV4cG9ydCBlbnVtIFZpZXdwb3J0U2l6ZVR5cGUge1xuXHR4c21hbGwgPSAwLFxuXHRzbWFsbCA9IDEsXG5cdG1lZGl1bSA9IDIsXG5cdGxhcmdlID0gMyxcblx0eGxhcmdlID0gNCxcblx0eHhsYXJnZSA9IDUsXG5cdHh4bGFyZ2UxID0gNixcbn1cblxuZXhwb3J0IGVudW0gQ29tcGFyaXNvbk9wZXJhdGlvbiB7XG5cdGVxdWFscyA9IFwiPVwiLFxuXHRub3RFcXVhbHMgPSBcIjw+XCIsXG5cdGxlc3NUaGFuID0gXCI8XCIsXG5cdGxlc3NPckVxdWFsVGhhbiA9IFwiPD1cIixcblx0Z3JlYXRlclRoYW4gPSBcIj5cIixcblx0Z3JlYXRlck9yRXF1YWxUaGFuID0gXCI+PVwiLFxufVxuXG5leHBvcnQgZW51bSBEZXZpY2VUeXBlIHtcblx0ZGVza3RvcCA9IFwiZGVza3RvcFwiLFxuXHRtb2JpbGUgPSBcIm1vYmlsZVwiLFxuXHR0YWJsZXQgPSBcInRhYmxldFwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXhWaWV3cG9ydE9wdGlvbnMge1xuXHQvKiogUG9sbGluZyBzcGVlZCBvbiByZXNpemluZyAoaW4gbWlsbGlzZWNvbmRzKS4gZS5nLiB0aGUgaGlnaGVyIHRoZSBudW1iZXIgdGhlIGxvbmdlciBpdCB0YWtlcyB0byByZWNhbGN1bGF0ZS4gKi9cblx0cmVzaXplUG9sbGluZ1NwZWVkOiBudW1iZXI7XG5cblx0LyoqIEJyZWFrcG9pbnRzIHRvIHVzZS4gS2V5IG5lZWRzIHRvIG1hdGNoIHRoZSBzaXplIHR5cGUgYW5kIHRoZSB2YWx1ZSB0aGUgd2lkdGggdGhyZXNob2xkLlxuXHQgKiBlLmcuIGdpdmVuIHdpZHRoICcxMDAwJyBhbmQgYG1lZGl1bWAgaXMgc2V0IHRvICc5OTInID0+IGBsYXJnZWAuXG5cdCAqL1xuXHRicmVha3BvaW50czogRGljdGlvbmFyeTxudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0U2l6ZSB7XG5cdHdpZHRoOiBudW1iZXI7XG5cdGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0U2l6ZVR5cGVJbmZvIHtcblx0dHlwZTogbnVtYmVyO1xuXHRuYW1lOiBzdHJpbmc7XG5cdHdpZHRoVGhyZXNob2xkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRNYXRjaENvbmRpdGlvbnMge1xuXHRzaXplVHlwZT86IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbDtcblx0c2l6ZVR5cGVFeGNsdWRlPzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsO1xuXHRleHByZXNzaW9uPzogVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24ge1xuXHRzaXplOiBzdHJpbmc7XG5cdG9wZXJhdGlvbjogQ29tcGFyaXNvbk9wZXJhdGlvbjtcbn1cbiJdfQ==

@@ -1,73 +0,20 @@

import * as tslib_1 from "tslib";
import * as _ from "lodash";
import { Injectable, Inject } from "@angular/core";
import { DOCUMENT } from "@angular/common";
import { fromEvent, of } from "rxjs";
import { map, distinctUntilChanged, startWith, share, shareReplay, auditTime, } from "rxjs/operators";
import { UX_CONFIG } from "../config";
import { ViewportSizeType } from "./viewport.model";
import { WindowRef } from "../platform/window";
import { ViewportServerSizeService } from "./viewport-server-size.service";
import { UX_VIEWPORT_DEFAULT_CONFIG } from "./viewport.const";
import { generateViewportSizeTypeInfoList, generateViewportSizeTypeInfoRefs } from "./viewport.util";
import * as i0 from "@angular/core";
import * as i1 from "../config";
import * as i2 from "@angular/common";
import * as i3 from "../platform/window";
import * as i4 from "./viewport-server-size.service";
// todo: make this configurable
/** Viewport sizes config, by upper bound. e.g. given width '1000' and `medium` is set to '992' => `large`. */
const viewportSizesConfig = {
xsmall: 450,
small: 767,
medium: 992,
large: 1200,
xlarge: 1500,
xxlarge: 1920,
xxlarge1: 2100
};
// todo: autogenereate
const viewportSizeRefs = {
[ViewportSizeType.xsmall]: Object.freeze({
name: "xsmall",
type: ViewportSizeType.xsmall,
widthThreshold: viewportSizesConfig.xsmall,
}),
[ViewportSizeType.small]: Object.freeze({
name: "small",
type: ViewportSizeType.small,
widthThreshold: viewportSizesConfig.small,
}),
[ViewportSizeType.medium]: Object.freeze({
name: "medium",
type: ViewportSizeType.medium,
widthThreshold: viewportSizesConfig.medium,
}),
[ViewportSizeType.large]: Object.freeze({
name: "large",
type: ViewportSizeType.large,
widthThreshold: viewportSizesConfig.large,
}),
[ViewportSizeType.xlarge]: Object.freeze({
name: "xlarge",
type: ViewportSizeType.xlarge,
widthThreshold: viewportSizesConfig.xlarge,
}),
[ViewportSizeType.xxlarge]: Object.freeze({
name: "xxlarge",
type: ViewportSizeType.xxlarge,
widthThreshold: viewportSizesConfig.xxlarge,
}),
[ViewportSizeType.xxlarge1]: Object.freeze({
name: "xxlarge1",
type: ViewportSizeType.xxlarge1,
widthThreshold: viewportSizesConfig.xxlarge1,
})
};
let ViewportService = class ViewportService {
constructor(config, document, windowRef, viewportServerSize) {
this.document = document;
import * as i1 from "../platform/window";
import * as i2 from "./viewport-server-size.service";
import * as i3 from "../config";
export class ViewportService {
constructor(windowRef, viewportServerSize, config) {
this.windowRef = windowRef;
this.viewportServerSize = viewportServerSize;
this._sizeTypes = generateViewportSizeTypeInfoList(config.viewport.breakpoints);
this._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);
if (windowRef.hasNative) {
this.resize$ = fromEvent(window, "resize").pipe(map(() => this.getViewportSize()), auditTime(config.viewport.resizePollingSpeed || UX_VIEWPORT_DEFAULT_CONFIG.resizePollingSpeed), share());
this.resize$ = fromEvent(window, "resize").pipe(map(() => this.getViewportSize()), auditTime(config.viewport.resizePollingSpeed), share());
}

@@ -77,4 +24,8 @@ else {

}
this.sizeType$ = this.resize$.pipe(startWith(this.getViewportSize()), map(x => this.calculateViewportSize(x.width)), distinctUntilChanged(), shareReplay(1));
this.sizeType$ = this.resize$.pipe(startWith(this.getViewportSize()), distinctUntilChanged((a, b) => a.width === b.width), map(x => this.getSizeTypeInfo(x.width)), distinctUntilChanged(), shareReplay(1));
}
/** Size types refs of the generated viewport size type info. */
get sizeTypeMap() { return this._sizeTypeMap; }
/** Viewport size types list ordered by type, smallest to largest. */
get sizeTypes() { return this._sizeTypes; }
/**

@@ -96,2 +47,3 @@ * Calculates amount of items that fits into container's width.

}
/** Returns the current viewport size */
getViewportSize() {

@@ -102,7 +54,6 @@ if (!this.windowRef.hasNative) {

const ua = navigator.userAgent.toLowerCase();
// safari subtracts the scrollbar width
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) {
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) { // safari subtracts the scrollbar width
return {
width: this.document.documentElement.clientWidth,
height: this.document.documentElement.clientHeight,
width: this.windowRef.native.document.documentElement.clientWidth,
height: this.windowRef.native.document.documentElement.clientHeight,
};

@@ -115,43 +66,24 @@ }

}
calculateViewportSize(width) {
if (width === this.lastWidthCheck && this.lastWidthSizeInfo) {
return this.lastWidthSizeInfo;
getSizeTypeInfo(width) {
const lastEntryIndex = this.sizeTypes.length - 1;
for (let idx = 0; idx < lastEntryIndex; idx++) {
const viewportSizeTypeInfo = this.sizeTypes[idx];
if (width <= viewportSizeTypeInfo.widthThreshold) {
return viewportSizeTypeInfo;
}
}
this.lastWidthCheck = width;
// todo: make this more dynamic + decouple from lodash
if (_.inRange(width, viewportSizesConfig.xsmall)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.xsmall];
}
else if (_.inRange(width, viewportSizesConfig.xsmall, viewportSizesConfig.small)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.small];
}
else if (_.inRange(width, viewportSizesConfig.small, viewportSizesConfig.medium)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.medium];
}
else if (_.inRange(width, viewportSizesConfig.medium, viewportSizesConfig.large)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.large];
}
else if (_.inRange(width, viewportSizesConfig.large, viewportSizesConfig.xlarge)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.xlarge];
}
else if (_.inRange(width, viewportSizesConfig.xlarge, viewportSizesConfig.xxlarge)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.xxlarge];
}
else {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.xxlarge1];
}
return this.lastWidthSizeInfo;
return this.sizeTypes[lastEntryIndex];
}
};
ViewportService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ViewportService_Factory() { return new ViewportService(i0.ɵɵinject(i1.UX_CONFIG), i0.ɵɵinject(i2.DOCUMENT), i0.ɵɵinject(i3.WindowRef), i0.ɵɵinject(i4.ViewportServerSizeService)); }, token: ViewportService, providedIn: "root" });
ViewportService = tslib_1.__decorate([
Injectable({
providedIn: "root",
}),
tslib_1.__param(0, Inject(UX_CONFIG)),
tslib_1.__param(1, Inject(DOCUMENT)),
tslib_1.__metadata("design:paramtypes", [Object, Object, WindowRef,
ViewportServerSizeService])
], ViewportService);
export { ViewportService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzc3Yvbmd4LnV4LyIsInNvdXJjZXMiOlsidmlld3BvcnQvdmlld3BvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBYyxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFDTixHQUFHLEVBQ0gsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsR0FDVCxNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBYSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFzQyxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7O0FBRTlELCtCQUErQjtBQUMvQiw4R0FBOEc7QUFDOUcsTUFBTSxtQkFBbUIsR0FBRztJQUMzQixNQUFNLEVBQUUsR0FBRztJQUNYLEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLEdBQUc7SUFDWCxLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxJQUFJO0lBQ1osT0FBTyxFQUFFLElBQUk7SUFDYixRQUFRLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRixzQkFBc0I7QUFDdEIsTUFBTSxnQkFBZ0IsR0FBK0M7SUFDcEUsQ0FBQyxnQkFBZ0IsQ0FB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Q0FBQyxDQUFDO1NBQ25FO2FBQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3BFO2FBQU07WUFDTixJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckU7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUMvQixDQUFDO0NBQ0QsQ0FBQTs7QUFoR1ksZUFBZTtJQUgzQixVQUFVLENBQUM7UUFDWCxVQUFVLEVBQUUsTUFBTTtLQUNsQixDQUFDO0lBWUMsbUJBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2pCLG1CQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTs2REFDRSxTQUFTO1FBQ0EseUJBQXlCO0dBZDFDLGVBQWUsQ0FnRzNCO1NBaEdZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcblx0bWFwLFxuXHRkaXN0aW5jdFVudGlsQ2hhbmdlZCxcblx0c3RhcnRXaXRoLFxuXHRzaGFyZSxcblx0c2hhcmVSZXBsYXksXG5cdGF1ZGl0VGltZSxcbn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tIFwiLi4vaW50ZXJuYWwvaW50ZXJuYWwubW9kZWxcIjtcbmltcG9ydCB7IFV4T3B0aW9ucywgVVhfQ09ORklHIH0gZnJvbSBcIi4uL2NvbmZpZ1wiO1xuaW1wb3J0IHsgVmlld3BvcnRTaXplVHlwZUluZm8sIFZpZXdwb3J0U2l6ZSwgVmlld3BvcnRTaXplVHlwZSB9IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tIFwiLi4vcGxhdGZvcm0vd2luZG93XCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZlclNpemVTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld3BvcnQtc2VydmVyLXNpemUuc2VydmljZVwiO1xuaW1wb3J0IHsgVVhfVklFV1BPUlRfREVGQVVMVF9DT05GSUcgfSBmcm9tIFwiLi92aWV3cG9ydC5jb25zdFwiO1xuXG4vLyB0b2RvOiBtYWtlIHRoaXMgY29uZmlndXJhYmxlXG4vKiogVmlld3BvcnQgc2l6ZXMgY29uZmlnLCBieSB1cHBlciBib3VuZC4gZS5nLiBnaXZlbiB3aWR0aCAnMTAwMCcgYW5kIGBtZWRpdW1gIGlzIHNldCB0byAnOTkyJyA9PiBgbGFyZ2VgLiAqL1xuY29uc3Qgdmlld3BvcnRTaXplc0NvbmZpZyA9IHtcblx0eHNtYWxsOiA0NTAsXG5cdHNtYWxsOiA3NjcsXG5cdG1lZGl1bTogOTkyLFxuXHRsYXJnZTogMTIwMCxcblx0eGxhcmdlOiAxNTAwLFxuXHR4eGxhcmdlOiAxOTIwLFxuXHR4eGxhcmdlMTogMjEwMFxufTtcblxuLy8gdG9kbzogYXV0b2dlbmVyZWF0ZVxuY29uc3Qgdmlld3BvcnRTaXplUmVmczogRGljdGlvbmFyeTxSZWFkb25seTxWaWV3cG9ydFNpemVUeXBlSW5mbz4+ID0ge1xuXHRbVmlld3BvcnRTaXplVHlwZS54c21hbGxdOiBPYmplY3QuZnJlZXplKHtcblx0XHRuYW1lOiBcInhzbWFsbFwiLFxuXHRcdHR5cGU6IFZpZXdwb3J0U2l6ZVR5cGUueHNtYWxsLFxuXHRcdHdpZHRoVGhyZXNob2xkOiB2aWV3cG9ydFNpemVzQ29uZmlnLnhzbWFsbCxcblx0fSBhcyBWaWV3cG9ydFNpemVUeXBlSW5mbyksXG5cdFtWaWV3cG9ydFNpemVUeXBlLnNtYWxsXTogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0bmFtZTogXCJzbWFsbFwiLFxuXHRcdHR5cGU6IFZpZXdwb3J0U2l6ZVR5cGUuc21hbGwsXG5cdFx0d2lkdGhUaHJlc2hvbGQ6IHZpZXdwb3J0U2l6ZXNDb25maWcuc21hbGwsXG5cdH0gYXMgVmlld3BvcnRTaXplVHlwZUluZm8pLFxuXHRbVmlld3BvcnRTaXplVHlwZS5tZWRpdW1dOiBPYmplY3QuZnJlZXplKHtcblx0XHRuYW1lOiBcIm1lZGl1bVwiLFxuXHRcdHR5cGU6IFZpZXdwb3J0U2l6ZVR5cGUubWVkaXVtLFxuXHRcdHdpZHRoVGhyZXNob2xkOiB2aWV3cG9ydFNpemVzQ29uZmlnLm1lZGl1bSxcblx0fSBhcyBWaWV3cG9ydFNpemVUeXBlSW5mbyksXG5cdFtWaWV3cG9ydFNpemVUeXBlLmxhcmdlXTogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0bmFtZTogXCJsYXJnZVwiLFxuXHRcdHR5cGU6IFZpZXdwb3J0U2l6ZVR5cGUubGFyZ2UsXG5cdFx0d2lkdGhUaHJlc2hvbGQ6IHZpZXdwb3J0U2l6ZXNDb25maWcubGFyZ2UsXG5cdH0gYXMgVmlld3BvcnRTaXplVHlwZUluZm8pLFxuXHRbVmlld3BvcnRTaXplVHlwZS54bGFyZ2VdOiBPYmplY3QuZnJlZXplKHtcblx0XHRuYW1lOiBcInhsYXJnZVwiLFxuXHRcdHR5cGU6IFZpZXdwb3J0U2l6ZVR5cGUueGxhcmdlLFxuXHRcdHdpZHRoVGhyZXNob2xkOiB2aWV3cG9ydFNpemVzQ29uZmlnLnhsYXJnZSxcblx0fSBhcyBWaWV3cG9ydFNpemVUeXBlSW5mbyksXG5cdFtWaWV3cG9ydFNpemVUeXBlLnh4bGFyZ2VdOiBPYmplY3QuZnJlZXplKHtcblx0XHRuYW1lOiBcInh4bGFyZ2VcIixcblx0XHR0eXBlOiBWaWV3cG9ydFNpemVUeXBlLnh4bGFyZ2UsXG5cdFx0d2lkdGhUaHJlc2hvbGQ6IHZpZXdwb3J0U2l6ZXNDb25maWcueHhsYXJnZSxcblx0fSBhcyBWaWV3cG9ydFNpemVUeXBlSW5mbyksXG5cdFtWaWV3cG9ydFNpemVUeXBlLnh4bGFyZ2UxXTogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0bmFtZTogXCJ4eGxhcmdlMVwiLFxuXHRcdHR5cGU6IFZpZXdwb3J0U2l6ZVR5cGUueHhsYXJnZTEsXG5cdFx0d2lkdGhUaHJlc2hvbGQ6IHZpZXdwb3J0U2l6ZXNDb25maWcueHhsYXJnZTEsXG5cdH0gYXMgVmlld3BvcnRTaXplVHlwZUluZm8pXG59O1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2Uge1xuXHQvKiogT2JzZXJ2YWJsZSB3aGVuIHdpbmRvdyBpcyByZXNpemVkICh3aGljaCBpcyBhbHNvIHRocm90dGxlZCkuICovXG5cdHJlc2l6ZSQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplPjtcblxuXHQvKiogT2JzZXJ2YWJsZSB3aGVuIHZpZXdwb3J0IHNpemUgdHlwZSBjaGFuZ2VzLiAqL1xuXHRzaXplVHlwZSQ6IE9ic2VydmFibGU8Vmlld3BvcnRTaXplVHlwZUluZm8+O1xuXG5cdHByaXZhdGUgbGFzdFdpZHRoQ2hlY2s6IG51bWJlciB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSBsYXN0V2lkdGhTaXplSW5mbzogVmlld3BvcnRTaXplVHlwZUluZm8gfCB1bmRlZmluZWQ7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0QEluamVjdChVWF9DT05GSUcpIGNvbmZpZzogVXhPcHRpb25zLFxuXHRcdEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueSxcblx0XHRwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuXHRcdHByaXZhdGUgdmlld3BvcnRTZXJ2ZXJTaXplOiBWaWV3cG9ydFNlcnZlclNpemVTZXJ2aWNlLFxuXHQpIHtcblx0XHRpZiAod2luZG93UmVmLmhhc05hdGl2ZSkge1xuXHRcdFx0dGhpcy5yZXNpemUkID0gZnJvbUV2ZW50PEV2ZW50Pih3aW5kb3csIFwicmVzaXplXCIpLnBpcGUoXG5cdFx0XHRcdG1hcCgoKSA9PiB0aGlzLmdldFZpZXdwb3J0U2l6ZSgpKSxcblx0XHRcdFx0YXVkaXRUaW1lKGNvbmZpZy52aWV3cG9ydC5yZXNpemVQb2xsaW5nU3BlZWQgfHwgVVhfVklFV1BPUlRfREVGQVVMVF9DT05GSUcucmVzaXplUG9sbGluZ1NwZWVkKSxcblx0XHRcdFx0c2hhcmUoKSxcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVzaXplJCA9IG9mKHZpZXdwb3J0U2VydmVyU2l6ZS5nZXQoKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zaXplVHlwZSQgPSB0aGlzLnJlc2l6ZSQucGlwZShcblx0XHRcdHN0YXJ0V2l0aCh0aGlzLmdldFZpZXdwb3J0U2l6ZSgpKSxcblx0XHRcdG1hcCh4ID0+IHRoaXMuY2FsY3VsYXRlVmlld3BvcnRTaXplKHgud2lkdGgpKSxcblx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG5cdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGN1bGF0ZXMgYW1vdW50IG9mIGl0ZW1zIHRoYXQgZml0cyBpbnRvIGNvbnRhaW5lcidzIHdpZHRoLlxuXHQgKiBAcGFyYW0gY29udGFpbmVyV2lkdGhcblx0ICogQHBhcmFtIGl0ZW1XaWR0aFxuXHQgKiBAcmV0dXJuc1xuXHQgKi9cblx0Y2FsY3VsYXRlSXRlbXNQZXJSb3coY29udGFpbmVyV2lkdGg6IG51bWJlciwgaXRlbVdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdGlmIChjb250YWluZXJXaWR0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250YWluZXJXaWR0aCAmJiAhdGhpcy53aW5kb3dSZWYuaGFzTmF0aXZlKSB7XG5cdFx0XHQvLyB0b2RvOiBmaW5kIGEgd2F5IHRvIGdldCBjb250YWluZXIgd2lkdGggZm9yIHNzclxuXHRcdFx0Y29udGFpbmVyV2lkdGggPSB0aGlzLnZpZXdwb3J0U2VydmVyU2l6ZS5nZXQoKS53aWR0aDtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29udGFpbmVyV2lkdGggLyBpdGVtV2lkdGg7XG5cdH1cblxuXHRwcml2YXRlIGdldFZpZXdwb3J0U2l6ZSgpOiBWaWV3cG9ydFNpemUge1xuXHRcdGlmICghdGhpcy53aW5kb3dSZWYuaGFzTmF0aXZlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52aWV3cG9ydFNlcnZlclNpemUuZ2V0KCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG5cdFx0Ly8gc2FmYXJpIHN1YnRyYWN0cyB0aGUgc2Nyb2xsYmFyIHdpZHRoXG5cdFx0aWYgKHVhLmluZGV4T2YoXCJzYWZhcmlcIikgIT09IC0xICYmIHVhLmluZGV4T2YoXCJjaHJvbWVcIikgPT09IC0xKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR3aWR0aDogdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsXG5cdFx0XHRcdGhlaWdodDogdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LFxuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHdpZHRoOiB0aGlzLndpbmRvd1JlZi5uYXRpdmUuaW5uZXJXaWR0aCxcblx0XHRcdGhlaWdodDogdGhpcy53aW5kb3dSZWYubmF0aXZlLmlubmVySGVpZ2h0LFxuXHRcdH07XG5cdH1cblxuXHRwcml2YXRlIGNhbGN1bGF0ZVZpZXdwb3J0U2l6ZSh3aWR0aDogbnVtYmVyKTogVmlld3BvcnRTaXplVHlwZUluZm8ge1xuXHRcdGlmICh3aWR0aCA9PT0gdGhpcy5sYXN0V2lkdGhDaGVjayAmJiB0aGlzLmxhc3RXaWR0aFNpemVJbmZvKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5sYXN0V2lkdGhTaXplSW5mbztcblx0XHR9XG5cdFx0dGhpcy5sYXN0V2lkdGhDaGVjayA9IHdpZHRoO1xuXG5cdFx0Ly8gdG9kbzogbWFrZSB0aGlzIG1vcmUgZHluYW1pYyArIGRlY291cGxlIGZyb20gbG9kYXNoXG5cdFx0aWYgKF8uaW5SYW5nZSh3aWR0aCwgdmlld3BvcnRTaXplc0NvbmZpZy54c21hbGwpKSB7XG5cdFx0XHR0aGlzLmxhc3RXaWR0aFNpemVJbmZvID0gdmlld3BvcnRTaXplUmVmc1tWaWV3cG9ydFNpemVUeXBlLnhzbWFsbF07XG5cdFx0fSBlbHNlIGlmIChfLmluUmFuZ2Uod2lkdGgsIHZpZXdwb3J0U2l6ZXNDb25maWcueHNtYWxsLCB2aWV3cG9ydFNpemVzQ29uZmlnLnNtYWxsKSkge1xuXHRcdFx0dGhpcy5sYXN0V2lkdGhTaXplSW5mbyA9IHZpZXdwb3J0U2l6ZVJlZnNbVmlld3BvcnRTaXplVHlwZS5zbWFsbF07XG5cdFx0fSBlbHNlIGlmIChfLmluUmFuZ2Uod2lkdGgsIHZpZXdwb3J0U2l6ZXNDb25maWcuc21hbGwsIHZpZXdwb3J0U2l6ZXNDb25maWcubWVkaXVtKSkge1xuXHRcdFx0dGhpcy5sYXN0V2lkdGhTaXplSW5mbyA9IHZpZXdwb3J0U2l6ZVJlZnNbVmlld3BvcnRTaXplVHlwZS5tZWRpdW1dO1xuXHRcdH0gZWxzZSBpZiAoXy5pblJhbmdlKHdpZHRoLCB2aWV3cG9ydFNpemVzQ29uZmlnLm1lZGl1bSwgdmlld3BvcnRTaXplc0NvbmZpZy5sYXJnZSkpIHtcblx0XHRcdHRoaXMubGFzdFdpZHRoU2l6ZUluZm8gPSB2aWV3cG9ydFNpemVSZWZzW1ZpZXdwb3J0U2l6ZVR5cGUubGFyZ2VdO1xuXHRcdH0gZWxzZSBpZiAoXy5pblJhbmdlKHdpZHRoLCB2aWV3cG9ydFNpemVzQ29uZmlnLmxhcmdlLCB2aWV3cG9ydFNpemVzQ29uZmlnLnhsYXJnZSkpIHtcblx0XHRcdHRoaXMubGFzdFdpZHRoU2l6ZUluZm8gPSB2aWV3cG9ydFNpemVSZWZzW1ZpZXdwb3J0U2l6ZVR5cGUueGxhcmdlXTtcblx0XHR9IGVsc2UgaWYgKF8uaW5SYW5nZSh3aWR0aCwgdmlld3BvcnRTaXplc0NvbmZpZy54bGFyZ2UsIHZpZXdwb3J0U2l6ZXNDb25maWcueHhsYXJnZSkpIHtcblx0XHRcdHRoaXMubGFzdFdpZHRoU2l6ZUluZm8gPSB2aWV3cG9ydFNpemVSZWZzW1ZpZXdwb3J0U2l6ZVR5cGUueHhsYXJnZV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubGFzdFdpZHRoU2l6ZUluZm8gPSB2aWV3cG9ydFNpemVSZWZzW1ZpZXdwb3J0U2l6ZVR5cGUueHhsYXJnZTFdO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5sYXN0V2lkdGhTaXplSW5mbztcblx0fVxufVxuIl19
}
ViewportService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ViewportService_Factory() { return new ViewportService(i0.ɵɵinject(i1.WindowRef), i0.ɵɵinject(i2.ViewportServerSizeService), i0.ɵɵinject(i3.UX_CONFIG)); }, token: ViewportService, providedIn: "root" });
ViewportService.decorators = [
{ type: Injectable, args: [{
providedIn: "root",
},] }
];
ViewportService.ctorParameters = () => [
{ type: WindowRef },
{ type: ViewportServerSizeService },
{ type: undefined, decorators: [{ type: Inject, args: [UX_CONFIG,] }] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9jaXJjbGVjaS9yZXBvL3NyYy8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUNOLEdBQUcsRUFDSCxvQkFBb0IsRUFDcEIsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxHQUNULE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBTXJHLE1BQU0sT0FBTyxlQUFlO0lBaUIzQixZQUNTLFNBQW9CLEVBQ3BCLGtCQUE2QyxFQUNsQyxNQUFpQjtRQUY1QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7UUFHckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxZQUFZLEdBQUcsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXRFLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBUSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUNyRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQ2pDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQzdDLEtBQUssRUFBRSxDQUNQLENBQUM7U0FDRjthQUFNO1lBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsRUFDakMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFDbkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDdkMsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNkLENBQUM7SUFDSCxDQUFDO0lBbENELGdFQUFnRTtJQUNoRSxJQUFJLFdBQVcsS0FBdUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUVqRixxRUFBcUU7SUFDckUsSUFBSSxTQUFTLEtBQTZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFnQ25FOzs7OztPQUtHO0lBQ0gsb0JBQW9CLENBQUMsY0FBc0IsRUFBRSxTQUFpQjtRQUM3RCxJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUU7WUFDekIsT0FBTyxDQUFDLENBQUM7U0FDVDtRQUNELElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUNqRCxrREFBa0Q7WUFDbEQsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDckQ7UUFFRCxPQUFPLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELHdDQUF3QztJQUNoQyxlQUFlO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNyQztRQUVELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0MsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSx1Q0FBdUM7WUFDeEcsT0FBTztnQkFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXO2dCQUNqRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZO2FBQ25FLENBQUM7U0FDRjtRQUVELE9BQU87WUFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUN2QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVztTQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFhO1FBQ3BDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVqRCxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsY0FBYyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzlDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVqRCxJQUFJLEtBQUssSUFBSSxvQkFBb0IsQ0FBQyxjQUFjLEVBQUU7Z0JBQ2pELE9BQU8sb0JBQW9CLENBQUM7YUFDNUI7U0FDRDtRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7O1lBakdELFVBQVUsU0FBQztnQkFDWCxVQUFVLEVBQUUsTUFBTTthQUNsQjs7O1lBUFEsU0FBUztZQUNULHlCQUF5Qjs0Q0EyQi9CLE1BQU0sU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcblx0bWFwLFxuXHRkaXN0aW5jdFVudGlsQ2hhbmdlZCxcblx0c3RhcnRXaXRoLFxuXHRzaGFyZSxcblx0c2hhcmVSZXBsYXksXG5cdGF1ZGl0VGltZSxcbn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IFV4T3B0aW9ucywgVVhfQ09ORklHIH0gZnJvbSBcIi4uL2NvbmZpZ1wiO1xuaW1wb3J0IHsgVmlld3BvcnRTaXplVHlwZUluZm8sIFZpZXdwb3J0U2l6ZSB9IGZyb20gXCIuL3ZpZXdwb3J0Lm1vZGVsXCI7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tIFwiLi4vcGxhdGZvcm0vd2luZG93XCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZlclNpemVTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld3BvcnQtc2VydmVyLXNpemUuc2VydmljZVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlSW5mb0xpc3QsIGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZUluZm9SZWZzIH0gZnJvbSBcIi4vdmlld3BvcnQudXRpbFwiO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2Uge1xuXG5cdC8qKiBPYnNlcnZhYmxlIHdoZW4gd2luZG93IGlzIHJlc2l6ZWQgKHdoaWNoIGlzIGFsc28gdGhyb3R0bGVkKS4gKi9cblx0cmVzaXplJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemU+O1xuXG5cdC8qKiBPYnNlcnZhYmxlIHdoZW4gdmlld3BvcnQgc2l6ZSB0eXBlIGNoYW5nZXMuICovXG5cdHNpemVUeXBlJDogT2JzZXJ2YWJsZTxWaWV3cG9ydFNpemVUeXBlSW5mbz47XG5cblx0LyoqIFNpemUgdHlwZXMgcmVmcyBvZiB0aGUgZ2VuZXJhdGVkIHZpZXdwb3J0IHNpemUgdHlwZSBpbmZvLiAqL1xuXHRnZXQgc2l6ZVR5cGVNYXAoKTogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz4geyByZXR1cm4gdGhpcy5fc2l6ZVR5cGVNYXA7IH1cblxuXHQvKiogVmlld3BvcnQgc2l6ZSB0eXBlcyBsaXN0IG9yZGVyZWQgYnkgdHlwZSwgc21hbGxlc3QgdG8gbGFyZ2VzdC4gKi9cblx0Z2V0IHNpemVUeXBlcygpOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdIHsgcmV0dXJuIHRoaXMuX3NpemVUeXBlczsgfVxuXG5cdHByaXZhdGUgX3NpemVUeXBlTWFwOiBEaWN0aW9uYXJ5PFZpZXdwb3J0U2l6ZVR5cGVJbmZvPjtcblx0cHJpdmF0ZSBfc2l6ZVR5cGVzOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG5cdFx0cHJpdmF0ZSB2aWV3cG9ydFNlcnZlclNpemU6IFZpZXdwb3J0U2VydmVyU2l6ZVNlcnZpY2UsXG5cdFx0QEluamVjdChVWF9DT05GSUcpIGNvbmZpZzogVXhPcHRpb25zLFxuXHQpIHtcblx0XHR0aGlzLl9zaXplVHlwZXMgPSBnZW5lcmF0ZVZpZXdwb3J0U2l6ZVR5cGVJbmZvTGlzdChjb25maWcudmlld3BvcnQuYnJlYWtwb2ludHMpO1xuXHRcdHRoaXMuX3NpemVUeXBlTWFwID0gZ2VuZXJhdGVWaWV3cG9ydFNpemVUeXBlSW5mb1JlZnModGhpcy5fc2l6ZVR5cGVzKTtcblxuXHRcdGlmICh3aW5kb3dSZWYuaGFzTmF0aXZlKSB7XG5cdFx0XHR0aGlzLnJlc2l6ZSQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgXCJyZXNpemVcIikucGlwZShcblx0XHRcdFx0bWFwKCgpID0+IHRoaXMuZ2V0Vmlld3BvcnRTaXplKCkpLFxuXHRcdFx0XHRhdWRpdFRpbWUoY29uZmlnLnZpZXdwb3J0LnJlc2l6ZVBvbGxpbmdTcGVlZCksXG5cdFx0XHRcdHNoYXJlKCksXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlc2l6ZSQgPSBvZih2aWV3cG9ydFNlcnZlclNpemUuZ2V0KCkpO1xuXHRcdH1cblxuXHRcdHRoaXMuc2l6ZVR5cGUkID0gdGhpcy5yZXNpemUkLnBpcGUoXG5cdFx0XHRzdGFydFdpdGgodGhpcy5nZXRWaWV3cG9ydFNpemUoKSksXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS53aWR0aCA9PT0gYi53aWR0aCksXG5cdFx0XHRtYXAoeCA9PiB0aGlzLmdldFNpemVUeXBlSW5mbyh4LndpZHRoKSksXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuXHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxjdWxhdGVzIGFtb3VudCBvZiBpdGVtcyB0aGF0IGZpdHMgaW50byBjb250YWluZXIncyB3aWR0aC5cblx0ICogQHBhcmFtIGNvbnRhaW5lcldpZHRoXG5cdCAqIEBwYXJhbSBpdGVtV2lkdGhcblx0ICogQHJldHVybnNcblx0ICovXG5cdGNhbGN1bGF0ZUl0ZW1zUGVyUm93KGNvbnRhaW5lcldpZHRoOiBudW1iZXIsIGl0ZW1XaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRpZiAoY29udGFpbmVyV2lkdGggPT09IDApIHtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblx0XHRpZiAoIWNvbnRhaW5lcldpZHRoICYmICF0aGlzLndpbmRvd1JlZi5oYXNOYXRpdmUpIHtcblx0XHRcdC8vIHRvZG86IGZpbmQgYSB3YXkgdG8gZ2V0IGNvbnRhaW5lciB3aWR0aCBmb3Igc3NyXG5cdFx0XHRjb250YWluZXJXaWR0aCA9IHRoaXMudmlld3BvcnRTZXJ2ZXJTaXplLmdldCgpLndpZHRoO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb250YWluZXJXaWR0aCAvIGl0ZW1XaWR0aDtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZpZXdwb3J0IHNpemUgKi9cblx0cHJpdmF0ZSBnZXRWaWV3cG9ydFNpemUoKTogVmlld3BvcnRTaXplIHtcblx0XHRpZiAoIXRoaXMud2luZG93UmVmLmhhc05hdGl2ZSkge1xuXHRcdFx0cmV0dXJuIHRoaXMudmlld3BvcnRTZXJ2ZXJTaXplLmdldCgpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuXHRcdGlmICh1YS5pbmRleE9mKFwic2FmYXJpXCIpICE9PSAtMSAmJiB1YS5pbmRleE9mKFwiY2hyb21lXCIpID09PSAtMSkgeyAvLyBzYWZhcmkgc3VidHJhY3RzIHRoZSBzY3JvbGxiYXIgd2lkdGhcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHdpZHRoOiB0aGlzLndpbmRvd1JlZi5uYXRpdmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLFxuXHRcdFx0XHRoZWlnaHQ6IHRoaXMud2luZG93UmVmLm5hdGl2ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0d2lkdGg6IHRoaXMud2luZG93UmVmLm5hdGl2ZS5pbm5lcldpZHRoLFxuXHRcdFx0aGVpZ2h0OiB0aGlzLndpbmRvd1JlZi5uYXRpdmUuaW5uZXJIZWlnaHQsXG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0U2l6ZVR5cGVJbmZvKHdpZHRoOiBudW1iZXIpOiBWaWV3cG9ydFNpemVUeXBlSW5mbyB7XG5cdFx0Y29uc3QgbGFzdEVudHJ5SW5kZXggPSB0aGlzLnNpemVUeXBlcy5sZW5ndGggLSAxO1xuXG5cdFx0Zm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgbGFzdEVudHJ5SW5kZXg7IGlkeCsrKSB7XG5cdFx0XHRjb25zdCB2aWV3cG9ydFNpemVUeXBlSW5mbyA9IHRoaXMuc2l6ZVR5cGVzW2lkeF07XG5cblx0XHRcdGlmICh3aWR0aCA8PSB2aWV3cG9ydFNpemVUeXBlSW5mby53aWR0aFRocmVzaG9sZCkge1xuXHRcdFx0XHRyZXR1cm4gdmlld3BvcnRTaXplVHlwZUluZm87XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuc2l6ZVR5cGVzW2xhc3RFbnRyeUluZGV4XTtcblx0fVxuXG59XG4iXX0=

@@ -1,2 +0,2 @@

import { ComparisonOperation, ViewportSizeType } from "./viewport.model";
import { ComparisonOperation } from "./viewport.model";
export function isViewportSizeMatcherExpression(value) {

@@ -33,16 +33,16 @@ if (typeof value !== "object" || !value) {

};
export function isViewportConditionMatch(evaluteSize, conditions) {
const isExcluded = match(conditions.sizeTypeExclude, evaluteSize.name, false);
export function isViewportConditionMatch(evaluateSize, conditions, viewportSizeTypeInfoRefs) {
const isExcluded = match(conditions.sizeTypeExclude, evaluateSize.name, false);
let isIncluded;
let isExpressionTruthy;
if (!isExcluded && conditions.expresson) {
const expressionSizeTypeValue = ViewportSizeType[conditions.expresson.size];
const expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expresson.operation];
isExpressionTruthy = expMatcher(evaluteSize.type, expressionSizeTypeValue);
if (!isExcluded && conditions.expression) {
const expressionSizeTypeValue = viewportSizeTypeInfoRefs[conditions.expression.size].type;
const expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expression.operation];
isExpressionTruthy = expMatcher(evaluateSize.type, expressionSizeTypeValue);
}
else {
isIncluded = match(conditions.sizeType, evaluteSize.name, true);
isIncluded = match(conditions.sizeType, evaluateSize.name, true);
}
const shouldRender = (isExpressionTruthy || isIncluded) && !isExcluded;
// console.warn(">>> shouldRender", { evaluteSize, conditions, shouldRender });
// console.warn(">>> shouldRender", { evaluateSize, conditions, shouldRender });
return !!shouldRender;

@@ -58,2 +58,48 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bzc3Yvbmd4LnV4LyIsInNvdXJjZXMiOlsidmlld3BvcnQvdmlld3BvcnQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ04sbUJBQW1CLEVBSW5CLGdCQUFnQixFQUNoQixNQUFNLGtCQUFrQixDQUFDO0FBRzFCLE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxLQUFjO0lBQzdELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0tBQ2I7SUFDRCxNQUFNLElBQUksR0FBMkMsS0FBSyxDQUFDO0lBQzNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0tBQ1o7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsb0NBQW9DLENBQUMsR0FBWTtJQUNoRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1QsT0FBTyxLQUFLLENBQUM7S0FDYjtJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN2QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDakIsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQy9CO0tBQ0Q7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUM7QUFHRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQWtEO0lBQy9GLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvRCxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDbEUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQy9ELENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDbEUsQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7Q0FDMUUsQ0FBQztBQUVGLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxXQUFpQyxFQUFFLFVBQW1DO0lBQzlHLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUUsSUFBSSxVQUFVLENBQUM7SUFDZixJQUFJLGtCQUFrQixDQUFDO0lBRXZCLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRTtRQUN4QyxNQUFNLHVCQUF1QixHQUFXLGdCQUFnQixDQUN2RCxVQUFVLENBQUMsU0FBUyxDQUFDLElBQVcsQ0FDekIsQ0FBQztRQUNULE1BQU0sVUFBVSxHQUFHLGlDQUFpQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckYsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztLQUMzRTtTQUFNO1FBQ04sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDaEU7SUFFRCxNQUFNLFlBQVksR0FBRyxDQUFDLGtCQUFrQixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3ZFLCtFQUErRTtJQUMvRSxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDdkIsQ0FBQztBQUVELFNBQVMsS0FBSyxDQUFDLEtBQTJDLEVBQUUsV0FBbUIsRUFBRSxZQUFxQjtJQUNyRyxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1gsT0FBTyxZQUFZLENBQUM7S0FDcEI7SUFFRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUM3QixDQUFDLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xuaW1wb3J0IHtcblx0Q29tcGFyaXNvbk9wZXJhdGlvbixcblx0Vmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24sXG5cdFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxuXHRWaWV3cG9ydE1hdGNoQ29uZGl0aW9ucyxcblx0Vmlld3BvcnRTaXplVHlwZVxufSBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24ge1xuXHRpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiIHx8ICF2YWx1ZSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRjb25zdCBhcmdzOiBQYXJ0aWFsPFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uPiA9IHZhbHVlO1xuXHRpZiAoYXJncy5zaXplICYmIGFyZ3Mub3BlcmF0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWaWV3cG9ydFNpemVNYXRjaGVyVHVwbGVFeHByZXNzaW9uKGFyZzogdW5rbm93bik6IGFyZyBpcyBbQ29tcGFyaXNvbk9wZXJhdGlvbiwgc3RyaW5nXSB7XG5cdGlmICghYXJnKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRpZiAoYXJnLmxlbmd0aCA9PT0gMikge1xuXHRcdFx0Y29uc3QgW29wXSA9IGFyZztcblx0XHRcdHJldHVybiBvcGVyYXRpb25zLmluY2x1ZGVzKG9wKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5cbmNvbnN0IG9wZXJhdGlvbnMgPSBPYmplY3QudmFsdWVzKENvbXBhcmlzb25PcGVyYXRpb24pO1xuXG5leHBvcnQgY29uc3QgQ09NUEFSSVNPTl9PUEVSQVRJT05fRlVOQ19NQVBQSU5HOiBEaWN0aW9uYXJ5PChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYm9vbGVhbj4gPSB7XG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmVxdWFsc106IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA9PT0gYixcblx0W0NvbXBhcmlzb25PcGVyYXRpb24ubm90RXF1YWxzXTogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhICE9PSBiLFxuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5sZXNzVGhhbl06IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA8IGIsXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmxlc3NPckVxdWFsVGhhbl06IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA8PSBiLFxuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5ncmVhdGVyVGhhbl06IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA+IGIsXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLmdyZWF0ZXJPckVxdWFsVGhhbl06IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSA+PSBiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmlld3BvcnRDb25kaXRpb25NYXRjaChldmFsdXRlU2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8sIGNvbmRpdGlvbnM6IFZpZXdwb3J0TWF0Y2hDb25kaXRpb25zKSB7XG5cdGNvbnN0IGlzRXhjbHVkZWQgPSBtYXRjaChjb25kaXRpb25zLnNpemVUeXBlRXhjbHVkZSwgZXZhbHV0ZVNpemUubmFtZSwgZmFsc2UpO1xuXHRsZXQgaXNJbmNsdWRlZDtcblx0bGV0IGlzRXhwcmVzc2lvblRydXRoeTtcblxuXHRpZiAoIWlzRXhjbHVkZWQgJiYgY29uZGl0aW9ucy5leHByZXNzb24pIHtcblx0XHRjb25zdCBleHByZXNzaW9uU2l6ZVR5cGVWYWx1ZTogbnVtYmVyID0gVmlld3BvcnRTaXplVHlwZVtcblx0XHRcdGNvbmRpdGlvbnMuZXhwcmVzc29uLnNpemUgYXMgYW55XG5cdFx0XSBhcyBhbnk7XG5cdFx0Y29uc3QgZXhwTWF0Y2hlciA9IENPTVBBUklTT05fT1BFUkFUSU9OX0ZVTkNfTUFQUElOR1tjb25kaXRpb25zLmV4cHJlc3Nvbi5vcGVyYXRpb25dO1xuXG5cdFx0aXNFeHByZXNzaW9uVHJ1dGh5ID0gZXhwTWF0Y2hlcihldmFsdXRlU2l6ZS50eXBlLCBleHByZXNzaW9uU2l6ZVR5cGVWYWx1ZSk7XG5cdH0gZWxzZSB7XG5cdFx0aXNJbmNsdWRlZCA9IG1hdGNoKGNvbmRpdGlvbnMuc2l6ZVR5cGUsIGV2YWx1dGVTaXplLm5hbWUsIHRydWUpO1xuXHR9XG5cblx0Y29uc3Qgc2hvdWxkUmVuZGVyID0gKGlzRXhwcmVzc2lvblRydXRoeSB8fCBpc0luY2x1ZGVkKSAmJiAhaXNFeGNsdWRlZDtcblx0Ly8gY29uc29sZS53YXJuKFwiPj4+IHNob3VsZFJlbmRlclwiLCB7IGV2YWx1dGVTaXplLCBjb25kaXRpb25zLCBzaG91bGRSZW5kZXIgfSk7XG5cdHJldHVybiAhIXNob3VsZFJlbmRlcjtcbn1cblxuZnVuY3Rpb24gbWF0Y2godmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCwgdGFyZ2V0VmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBib29sZWFuKSB7XG5cdGlmICghdmFsdWUpIHtcblx0XHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xuXHR9XG5cblx0cmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG5cdFx0PyB2YWx1ZS5pbmNsdWRlcyh0YXJnZXRWYWx1ZSlcblx0XHQ6IHZhbHVlID09PSB0YXJnZXRWYWx1ZTtcbn0iXX0=
/**
* Converts the breakpoints into a 2 dimensional array containing the name and width, and sorted from
* smallest to largest.
* @param breakpoints the breakpoints obtained from the config
* @internal
*/
function getSortedBreakpoints(breakpoints) {
return Object.entries(breakpoints)
.sort(([, widthA], [, widthB]) => widthA - widthB);
}
/**
* A util function which generates the ViewportSizeTypeInfo.type for each breakpoint.
* @param breakpoints the custom breakpoints
*/
export function generateViewportSizeType(breakpoints) {
return Object.freeze(getSortedBreakpoints(breakpoints).reduce((dictionary, [name], index) => {
dictionary[name] = index;
dictionary[index] = name;
return dictionary;
}, {}));
}
/**
* Pre-processes the given breakpoints into an ordered list from smallest to largest while generating
* all the necessary information on the viewport.
* @param breakpoints the breakpoints obtained from the config
* @internal
*/
export function generateViewportSizeTypeInfoList(breakpoints) {
return getSortedBreakpoints(breakpoints)
.map(([name, width], index) => (Object.freeze({
name,
type: index,
widthThreshold: width
})));
}
/**
* Converts the breakpoint list into a dictionary while using the name as key.
* @param breakpointList the list of breakpoints
* @internal
*/
export function generateViewportSizeTypeInfoRefs(breakpointList) {
return Object.freeze(breakpointList.reduce((dictionary, breakpoint) => {
dictionary[breakpoint.name] = breakpoint;
return dictionary;
}, {}));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9jaXJjbGVjaS9yZXBvL3NyYy8iLCJzb3VyY2VzIjpbInZpZXdwb3J0L3ZpZXdwb3J0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNOLG1CQUFtQixFQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxLQUFjO0lBQzdELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0tBQ2I7SUFDRCxNQUFNLElBQUksR0FBMkMsS0FBSyxDQUFDO0lBQzNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0tBQ1o7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsb0NBQW9DLENBQUMsR0FBWTtJQUNoRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1QsT0FBTyxLQUFLLENBQUM7S0FDYjtJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN2QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDakIsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQy9CO0tBQ0Q7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUM7QUFHRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQWtEO0lBQy9GLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFD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SUFBSSxDQUFDO1FBQ3pCLE9BQU8sVUFBVSxDQUFDO0lBQ25CLENBQUMsRUFBRSxFQUFFLENBQ0wsQ0FDNkIsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsV0FBK0I7SUFDL0UsT0FBTyxvQkFBb0IsQ0FBQyxXQUFXLENBQUM7U0FDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDN0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2QsSUFBSTtRQUNKLElBQUksRUFBRSxLQUFLO1FBQ1gsY0FBYyxFQUFFLEtBQUs7S0FDckIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLGNBQXNDO0lBQ3RGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbkIsY0FBYyxDQUFDLE1BQU0sQ0FBbUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUU7UUFDbEYsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDekMsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNOLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi9pbnRlcm5hbC9pbnRlcm5hbC5tb2RlbFwiO1xuaW1wb3J0IHtcblx0Q29tcGFyaXNvbk9wZXJhdGlvbixcblx0Vmlld3BvcnRTaXplTWF0Y2hlckV4cHJlc3Npb24sXG5cdFZpZXdwb3J0U2l6ZVR5cGVJbmZvLFxuXHRWaWV3cG9ydE1hdGNoQ29uZGl0aW9uc1xufSBmcm9tIFwiLi92aWV3cG9ydC5tb2RlbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFZpZXdwb3J0U2l6ZU1hdGNoZXJFeHByZXNzaW9uIHtcblx0aWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiB8fCAhdmFsdWUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Y29uc3QgYXJnczogUGFydGlhbDxWaWV3cG9ydFNpemVNYXRjaGVyRXhwcmVzc2lvbj4gPSB2YWx1ZTtcblx0aWYgKGFyZ3Muc2l6ZSAmJiBhcmdzLm9wZXJhdGlvbikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmlld3BvcnRTaXplTWF0Y2hlclR1cGxlRXhwcmVzc2lvbihhcmc6IHVua25vd24pOiBhcmcgaXMgW0NvbXBhcmlzb25PcGVyYXRpb24sIHN0cmluZ10ge1xuXHRpZiAoIWFyZykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0aWYgKGFyZy5sZW5ndGggPT09IDIpIHtcblx0XHRcdGNvbnN0IFtvcF0gPSBhcmc7XG5cdFx0XHRyZXR1cm4gb3BlcmF0aW9ucy5pbmNsdWRlcyhvcCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuXG5jb25zdCBvcGVyYXRpb25zID0gT2JqZWN0LnZhbHVlcyhDb21wYXJpc29uT3BlcmF0aW9uKTtcblxuZXhwb3J0IGNvbnN0IENPTVBBUklTT05fT1BFUkFUSU9OX0ZVTkNfTUFQUElORzogRGljdGlvbmFyeTwoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGJvb2xlYW4+ID0ge1xuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5lcXVhbHNdOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgPT09IGIsXG5cdFtDb21wYXJpc29uT3BlcmF0aW9uLm5vdEVxdWFsc106IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gYSAhPT0gYixcblx0W0NvbXBhcmlzb25PcGVyYXRpb24ubGVzc1RoYW5dOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgPCBiLFxuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5sZXNzT3JFcXVhbFRoYW5dOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgPD0gYixcblx0W0NvbXBhcmlzb25PcGVyYXRpb24uZ3JlYXRlclRoYW5dOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgPiBiLFxuXHRbQ29tcGFyaXNvbk9wZXJhdGlvbi5ncmVhdGVyT3JFcXVhbFRoYW5dOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgPj0gYixcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpZXdwb3J0Q29uZGl0aW9uTWF0Y2goXG5cdGV2YWx1YXRlU2l6ZTogVmlld3BvcnRTaXplVHlwZUluZm8sXG5cdGNvbmRpdGlvbnM6IFZpZXdwb3J0TWF0Y2hDb25kaXRpb25zLFxuXHR2aWV3cG9ydFNpemVUeXBlSW5mb1JlZnM6IERpY3Rpb25hcnk8Vmlld3BvcnRTaXplVHlwZUluZm8+XG4pOiBib29sZWFuIHtcblx0Y29uc3QgaXNFeGNsdWRlZCA9IG1hdGNoKGNvbmRpdGlvbnMuc2l6ZVR5cGVFeGNsdWRlLCBldmFsdWF0ZVNpemUubmFtZSwgZmFsc2UpO1xuXHRsZXQgaXNJbmNsdWRlZDtcblx0bGV0IGlzRXhwcmVzc2lvblRydXRoeTtcblxuXHRpZiAoIWlzRXhjbHVkZWQgJiYgY29uZGl0aW9ucy5leHByZXNzaW9uKSB7XG5cdFx0Y29uc3QgZXhwcmVzc2lvblNpemVUeXBlVmFsdWU6IG51bWJlciA9IHZpZXdwb3J0U2l6ZVR5cGVJbmZvUmVmc1tjb25kaXRpb25zLmV4cHJlc3Npb24uc2l6ZV0udHlwZTtcblx0XHRjb25zdCBleHBNYXRjaGVyID0gQ09NUEFSSVNPTl9PUEVSQVRJT05fRlVOQ19NQVBQSU5HW2NvbmRpdGlvbnMuZXhwcmVzc2lvbi5vcGVyYXRpb25dO1xuXG5cdFx0aXNFeHByZXNzaW9uVHJ1dGh5ID0gZXhwTWF0Y2hlcihldmFsdWF0ZVNpemUudHlwZSwgZXhwcmVzc2lvblNpemVUeXBlVmFsdWUpO1xuXHR9IGVsc2Uge1xuXHRcdGlzSW5jbHVkZWQgPSBtYXRjaChjb25kaXRpb25zLnNpemVUeXBlLCBldmFsdWF0ZVNpemUubmFtZSwgdHJ1ZSk7XG5cdH1cblxuXHRjb25zdCBzaG91bGRSZW5kZXIgPSAoaXNFeHByZXNzaW9uVHJ1dGh5IHx8IGlzSW5jbHVkZWQpICYmICFpc0V4Y2x1ZGVkO1xuXHQvLyBjb25zb2xlLndhcm4oXCI+Pj4gc2hvdWxkUmVuZGVyXCIsIHsgZXZhbHVhdGVTaXplLCBjb25kaXRpb25zLCBzaG91bGRSZW5kZXIgfSk7XG5cdHJldHVybiAhIXNob3VsZFJlbmRlcjtcbn1cblxuZnVuY3Rpb24gbWF0Y2godmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCwgdGFyZ2V0VmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBib29sZWFuKSB7XG5cdGlmICghdmFsdWUpIHtcblx0XHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xuXHR9XG5cblx0cmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG5cdFx0PyB2YWx1ZS5pbmNsdWRlcyh0YXJnZXRWYWx1ZSlcblx0XHQ6IHZhbHVlID09PSB0YXJnZXRWYWx1ZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludHMgaW50byBhIDIgZGltZW5zaW9uYWwgYXJyYXkgY29udGFpbmluZyB0aGUgbmFtZSBhbmQgd2lkdGgsIGFuZCBzb3J0ZWQgZnJvbVxuICogIHNtYWxsZXN0IHRvIGxhcmdlc3QuXG4gKiBAcGFyYW0gYnJlYWtwb2ludHMgdGhlIGJyZWFrcG9pbnRzIG9idGFpbmVkIGZyb20gdGhlIGNvbmZpZ1xuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGdldFNvcnRlZEJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzOiBEaWN0aW9uYXJ5PG51bWJlcj4pOiBbc3RyaW5nLCBudW1iZXJdW10ge1xuXHRyZXR1cm4gT2JqZWN0LmVudHJpZXMoYnJlYWtwb2ludHMpXG5cdFx0LnNvcnQoKFssIHdpZHRoQV0sIFssIHdpZHRoQl0pID0+IHdpZHRoQSAtIHdpZHRoQik7XG59XG5cbi8qKlxuICogQSB1dGlsIGZ1bmN0aW9uIHdoaWNoIGdlbmVyYXRlcyB0aGUgVmlld3BvcnRTaXplVHlwZUluZm8udHlwZSBmb3IgZWFjaCBicmVha3BvaW50LlxuICogQHBhcmFtIGJyZWFrcG9pbnRzIHRoZSBjdXN0b20gYnJlYWtwb2ludHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgbnVtYmVyPj4oYnJlYWtwb2ludHM6IFQpOiBUICYgUmVjb3JkPG51bWJlciwgc3RyaW5nPiB7XG5cdHJldHVybiBPYmplY3QuZnJlZXplKFxuXHRcdGdldFNvcnRlZEJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzKS5yZWR1Y2U8UmVjb3JkPG51bWJlciB8IHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPj4oXG5cdFx0XHQoZGljdGlvbmFyeSwgW25hbWVdLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRkaWN0aW9uYXJ5W25hbWVdID0gaW5kZXg7XG5cdFx0XHRcdGRpY3Rpb25hcnlbaW5kZXhdID0gbmFtZTtcblx0XHRcdFx0cmV0dXJuIGRpY3Rpb25hcnk7XG5cdFx0XHR9LCB7fVxuXHRcdClcblx0KSBhcyBUICYgUmVjb3JkPG51bWJlciwgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBQcmUtcHJvY2Vzc2VzIHRoZSBnaXZlbiBicmVha3BvaW50cyBpbnRvIGFuIG9yZGVyZWQgbGlzdCBmcm9tIHNtYWxsZXN0IHRvIGxhcmdlc3Qgd2hpbGUgZ2VuZXJhdGluZ1xuICogIGFsbCB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIG9uIHRoZSB2aWV3cG9ydC5cbiAqIEBwYXJhbSBicmVha3BvaW50cyB0aGUgYnJlYWtwb2ludHMgb2J0YWluZWQgZnJvbSB0aGUgY29uZmlnXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZUluZm9MaXN0KGJyZWFrcG9pbnRzOiBEaWN0aW9uYXJ5PG51bWJlcj4pOiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdIHtcblx0cmV0dXJuIGdldFNvcnRlZEJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzKVxuXHRcdC5tYXAoKFtuYW1lLCB3aWR0aF0sIGluZGV4KSA9PlxuXHRcdFx0KE9iamVjdC5mcmVlemUoe1xuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHR0eXBlOiBpbmRleCxcblx0XHRcdFx0d2lkdGhUaHJlc2hvbGQ6IHdpZHRoXG5cdFx0XHR9KSlcblx0XHQpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBicmVha3BvaW50IGxpc3QgaW50byBhIGRpY3Rpb25hcnkgd2hpbGUgdXNpbmcgdGhlIG5hbWUgYXMga2V5LlxuICogQHBhcmFtIGJyZWFrcG9pbnRMaXN0IHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVmlld3BvcnRTaXplVHlwZUluZm9SZWZzKGJyZWFrcG9pbnRMaXN0OiBWaWV3cG9ydFNpemVUeXBlSW5mb1tdKTogRGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz4ge1xuXHRyZXR1cm4gT2JqZWN0LmZyZWV6ZShcblx0XHRicmVha3BvaW50TGlzdC5yZWR1Y2U8RGljdGlvbmFyeTxWaWV3cG9ydFNpemVUeXBlSW5mbz4+KChkaWN0aW9uYXJ5LCBicmVha3BvaW50KSA9PiB7XG5cdFx0XHRkaWN0aW9uYXJ5W2JyZWFrcG9pbnQubmFtZV0gPSBicmVha3BvaW50O1xuXHRcdFx0cmV0dXJuIGRpY3Rpb25hcnk7XG5cdFx0fSwge30pXG5cdCk7XG59XG4iXX0=

@@ -1,15 +0,55 @@

import { __decorate, __param, __metadata } from 'tslib';
import { InjectionToken, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, Optional, Input, TemplateRef, Directive, Renderer2, ViewContainerRef, ChangeDetectorRef, NgModule } from '@angular/core';
import { fromEvent, of, Subject } from 'rxjs';
import { InjectionToken, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, Optional, Directive, Renderer2, ViewContainerRef, ChangeDetectorRef, TemplateRef, Input, NgModule } from '@angular/core';
import { fromEvent, of, Subscription, Subject } from 'rxjs';
import { map, auditTime, share, startWith, distinctUntilChanged, shareReplay, filter, tap, pairwise } from 'rxjs/operators';
import { inRange } from 'lodash';
import { DOCUMENT } from '@angular/common';
/** Default viewport breakpoints. */
const UX_VIEWPORT_DEFAULT_BREAKPOINTS = {
xsmall: 450,
small: 767,
medium: 992,
large: 1200,
xlarge: 1500,
xxlarge: 1920,
xxlarge1: 2100,
};
const UX_VIEWPORT_DEFAULT_CONFIG = {
resizePollingSpeed: 33,
breakpoints: UX_VIEWPORT_DEFAULT_BREAKPOINTS
};
const UX_DEFAULT_CONFIG = {
viewport: {
resizePollingSpeed: 33,
}
viewport: UX_VIEWPORT_DEFAULT_CONFIG,
};
const UX_CONFIG = new InjectionToken("@ssv/ngx.ux-config");
const WINDOW = new InjectionToken("Window");
class WindowRef {
constructor(
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
window) {
this.window = window;
}
/** Window underlying native object. */
get native() {
return this.window;
}
/** Determines whether native element is supported or not. Generally `false` when executing in SSR. */
get hasNative() {
return !!this.native.window;
}
}
WindowRef.ɵprov = ɵɵdefineInjectable({ factory: function WindowRef_Factory() { return new WindowRef(ɵɵinject(WINDOW)); }, token: WindowRef, providedIn: "root" });
WindowRef.decorators = [
{ type: Injectable, args: [{
providedIn: "root",
},] }
];
WindowRef.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [WINDOW,] }] }
];
/**
* The indices of each breakpoint provided based on the `UX_VIEWPORT_DEFAULT_BREAKPOINTS`.
* @see UX_VIEWPORT_DEFAULT_BREAKPOINTS
*/
var ViewportSizeType;

@@ -41,25 +81,2 @@ (function (ViewportSizeType) {

const WINDOW = new InjectionToken("Window");
let WindowRef = class WindowRef {
constructor(window) {
this.window = window;
}
/** Window underlying native object. */
get native() {
return this.window;
}
/** Determines whether native element is supported or not. Generally `false` when executing in SSR. */
get hasNative() {
return !!this.native.window;
}
};
WindowRef.ngInjectableDef = ɵɵdefineInjectable({ factory: function WindowRef_Factory() { return new WindowRef(ɵɵinject(WINDOW)); }, token: WindowRef, providedIn: "root" });
WindowRef = __decorate([
Injectable({
providedIn: "root",
}),
__param(0, Inject(WINDOW)),
__metadata("design:paramtypes", [Object])
], WindowRef);
// todo: make this configurable

@@ -82,3 +99,3 @@ /** Viewport size for SSR. */

const UX_VIEWPORT_SSR_DEVICE = new InjectionToken("@ssv/ngx.ux-config/viewport/ssr-device");
let ViewportServerSizeService = class ViewportServerSizeService {
class ViewportServerSizeService {
constructor(deviceType) {

@@ -88,158 +105,15 @@ this.deviceType = deviceType;

get() {
let size = viewportSizeSSR[this.deviceType];
if (!size) {
size = viewportSizeSSR[DeviceType.desktop];
}
return size;
return viewportSizeSSR[this.deviceType] || viewportSizeSSR[DeviceType.desktop];
}
};
ViewportServerSizeService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ViewportServerSizeService_Factory() { return new ViewportServerSizeService(ɵɵinject(UX_VIEWPORT_SSR_DEVICE, 8)); }, token: ViewportServerSizeService, providedIn: "root" });
ViewportServerSizeService = __decorate([
Injectable({
providedIn: "root",
}),
__param(0, Optional()), __param(0, Inject(UX_VIEWPORT_SSR_DEVICE)),
__metadata("design:paramtypes", [String])
], ViewportServerSizeService);
}
ViewportServerSizeService.ɵprov = ɵɵdefineInjectable({ factory: function ViewportServerSizeService_Factory() { return new ViewportServerSizeService(ɵɵinject(UX_VIEWPORT_SSR_DEVICE, 8)); }, token: ViewportServerSizeService, providedIn: "root" });
ViewportServerSizeService.decorators = [
{ type: Injectable, args: [{
providedIn: "root",
},] }
];
ViewportServerSizeService.ctorParameters = () => [
{ type: DeviceType, decorators: [{ type: Optional }, { type: Inject, args: [UX_VIEWPORT_SSR_DEVICE,] }] }
];
const UX_VIEWPORT_DEFAULT_CONFIG = {
resizePollingSpeed: 33
};
// todo: make this configurable
/** Viewport sizes config, by upper bound. e.g. given width '1000' and `medium` is set to '992' => `large`. */
const viewportSizesConfig = {
xsmall: 450,
small: 767,
medium: 992,
large: 1200,
xlarge: 1500,
xxlarge: 1920,
xxlarge1: 2100
};
// todo: autogenereate
const viewportSizeRefs = {
[ViewportSizeType.xsmall]: Object.freeze({
name: "xsmall",
type: ViewportSizeType.xsmall,
widthThreshold: viewportSizesConfig.xsmall,
}),
[ViewportSizeType.small]: Object.freeze({
name: "small",
type: ViewportSizeType.small,
widthThreshold: viewportSizesConfig.small,
}),
[ViewportSizeType.medium]: Object.freeze({
name: "medium",
type: ViewportSizeType.medium,
widthThreshold: viewportSizesConfig.medium,
}),
[ViewportSizeType.large]: Object.freeze({
name: "large",
type: ViewportSizeType.large,
widthThreshold: viewportSizesConfig.large,
}),
[ViewportSizeType.xlarge]: Object.freeze({
name: "xlarge",
type: ViewportSizeType.xlarge,
widthThreshold: viewportSizesConfig.xlarge,
}),
[ViewportSizeType.xxlarge]: Object.freeze({
name: "xxlarge",
type: ViewportSizeType.xxlarge,
widthThreshold: viewportSizesConfig.xxlarge,
}),
[ViewportSizeType.xxlarge1]: Object.freeze({
name: "xxlarge1",
type: ViewportSizeType.xxlarge1,
widthThreshold: viewportSizesConfig.xxlarge1,
})
};
let ViewportService = class ViewportService {
constructor(config, document, windowRef, viewportServerSize) {
this.document = document;
this.windowRef = windowRef;
this.viewportServerSize = viewportServerSize;
if (windowRef.hasNative) {
this.resize$ = fromEvent(window, "resize").pipe(map(() => this.getViewportSize()), auditTime(config.viewport.resizePollingSpeed || UX_VIEWPORT_DEFAULT_CONFIG.resizePollingSpeed), share());
}
else {
this.resize$ = of(viewportServerSize.get());
}
this.sizeType$ = this.resize$.pipe(startWith(this.getViewportSize()), map(x => this.calculateViewportSize(x.width)), distinctUntilChanged(), shareReplay(1));
}
/**
* Calculates amount of items that fits into container's width.
* @param containerWidth
* @param itemWidth
* @returns
*/
calculateItemsPerRow(containerWidth, itemWidth) {
if (containerWidth === 0) {
return 0;
}
if (!containerWidth && !this.windowRef.hasNative) {
// todo: find a way to get container width for ssr
containerWidth = this.viewportServerSize.get().width;
}
return containerWidth / itemWidth;
}
getViewportSize() {
if (!this.windowRef.hasNative) {
return this.viewportServerSize.get();
}
const ua = navigator.userAgent.toLowerCase();
// safari subtracts the scrollbar width
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) {
return {
width: this.document.documentElement.clientWidth,
height: this.document.documentElement.clientHeight,
};
}
return {
width: this.windowRef.native.innerWidth,
height: this.windowRef.native.innerHeight,
};
}
calculateViewportSize(width) {
if (width === this.lastWidthCheck && this.lastWidthSizeInfo) {
return this.lastWidthSizeInfo;
}
this.lastWidthCheck = width;
// todo: make this more dynamic + decouple from lodash
if (inRange(width, viewportSizesConfig.xsmall)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.xsmall];
}
else if (inRange(width, viewportSizesConfig.xsmall, viewportSizesConfig.small)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.small];
}
else if (inRange(width, viewportSizesConfig.small, viewportSizesConfig.medium)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.medium];
}
else if (inRange(width, viewportSizesConfig.medium, viewportSizesConfig.large)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.large];
}
else if (inRange(width, viewportSizesConfig.large, viewportSizesConfig.xlarge)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.xlarge];
}
else if (inRange(width, viewportSizesConfig.xlarge, viewportSizesConfig.xxlarge)) {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.xxlarge];
}
else {
this.lastWidthSizeInfo = viewportSizeRefs[ViewportSizeType.xxlarge1];
}
return this.lastWidthSizeInfo;
}
};
ViewportService.ngInjectableDef = ɵɵdefineInjectable({ factory: function ViewportService_Factory() { return new ViewportService(ɵɵinject(UX_CONFIG), ɵɵinject(DOCUMENT), ɵɵinject(WindowRef), ɵɵinject(ViewportServerSizeService)); }, token: ViewportService, providedIn: "root" });
ViewportService = __decorate([
Injectable({
providedIn: "root",
}),
__param(0, Inject(UX_CONFIG)),
__param(1, Inject(DOCUMENT)),
__metadata("design:paramtypes", [Object, Object, WindowRef,
ViewportServerSizeService])
], ViewportService);
function isViewportSizeMatcherExpression(value) {

@@ -276,16 +150,16 @@ if (typeof value !== "object" || !value) {

};
function isViewportConditionMatch(evaluteSize, conditions) {
const isExcluded = match(conditions.sizeTypeExclude, evaluteSize.name, false);
function isViewportConditionMatch(evaluateSize, conditions, viewportSizeTypeInfoRefs) {
const isExcluded = match(conditions.sizeTypeExclude, evaluateSize.name, false);
let isIncluded;
let isExpressionTruthy;
if (!isExcluded && conditions.expresson) {
const expressionSizeTypeValue = ViewportSizeType[conditions.expresson.size];
const expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expresson.operation];
isExpressionTruthy = expMatcher(evaluteSize.type, expressionSizeTypeValue);
if (!isExcluded && conditions.expression) {
const expressionSizeTypeValue = viewportSizeTypeInfoRefs[conditions.expression.size].type;
const expMatcher = COMPARISON_OPERATION_FUNC_MAPPING[conditions.expression.operation];
isExpressionTruthy = expMatcher(evaluateSize.type, expressionSizeTypeValue);
}
else {
isIncluded = match(conditions.sizeType, evaluteSize.name, true);
isIncluded = match(conditions.sizeType, evaluateSize.name, true);
}
const shouldRender = (isExpressionTruthy || isIncluded) && !isExcluded;
// console.warn(">>> shouldRender", { evaluteSize, conditions, shouldRender });
// console.warn(">>> shouldRender", { evaluateSize, conditions, shouldRender });
return !!shouldRender;

@@ -301,3 +175,123 @@ }

}
/**
* Converts the breakpoints into a 2 dimensional array containing the name and width, and sorted from
* smallest to largest.
* @param breakpoints the breakpoints obtained from the config
* @internal
*/
function getSortedBreakpoints(breakpoints) {
return Object.entries(breakpoints)
.sort(([, widthA], [, widthB]) => widthA - widthB);
}
/**
* A util function which generates the ViewportSizeTypeInfo.type for each breakpoint.
* @param breakpoints the custom breakpoints
*/
function generateViewportSizeType(breakpoints) {
return Object.freeze(getSortedBreakpoints(breakpoints).reduce((dictionary, [name], index) => {
dictionary[name] = index;
dictionary[index] = name;
return dictionary;
}, {}));
}
/**
* Pre-processes the given breakpoints into an ordered list from smallest to largest while generating
* all the necessary information on the viewport.
* @param breakpoints the breakpoints obtained from the config
* @internal
*/
function generateViewportSizeTypeInfoList(breakpoints) {
return getSortedBreakpoints(breakpoints)
.map(([name, width], index) => (Object.freeze({
name,
type: index,
widthThreshold: width
})));
}
/**
* Converts the breakpoint list into a dictionary while using the name as key.
* @param breakpointList the list of breakpoints
* @internal
*/
function generateViewportSizeTypeInfoRefs(breakpointList) {
return Object.freeze(breakpointList.reduce((dictionary, breakpoint) => {
dictionary[breakpoint.name] = breakpoint;
return dictionary;
}, {}));
}
class ViewportService {
constructor(windowRef, viewportServerSize, config) {
this.windowRef = windowRef;
this.viewportServerSize = viewportServerSize;
this._sizeTypes = generateViewportSizeTypeInfoList(config.viewport.breakpoints);
this._sizeTypeMap = generateViewportSizeTypeInfoRefs(this._sizeTypes);
if (windowRef.hasNative) {
this.resize$ = fromEvent(window, "resize").pipe(map(() => this.getViewportSize()), auditTime(config.viewport.resizePollingSpeed), share());
}
else {
this.resize$ = of(viewportServerSize.get());
}
this.sizeType$ = this.resize$.pipe(startWith(this.getViewportSize()), distinctUntilChanged((a, b) => a.width === b.width), map(x => this.getSizeTypeInfo(x.width)), distinctUntilChanged(), shareReplay(1));
}
/** Size types refs of the generated viewport size type info. */
get sizeTypeMap() { return this._sizeTypeMap; }
/** Viewport size types list ordered by type, smallest to largest. */
get sizeTypes() { return this._sizeTypes; }
/**
* Calculates amount of items that fits into container's width.
* @param containerWidth
* @param itemWidth
* @returns
*/
calculateItemsPerRow(containerWidth, itemWidth) {
if (containerWidth === 0) {
return 0;
}
if (!containerWidth && !this.windowRef.hasNative) {
// todo: find a way to get container width for ssr
containerWidth = this.viewportServerSize.get().width;
}
return containerWidth / itemWidth;
}
/** Returns the current viewport size */
getViewportSize() {
if (!this.windowRef.hasNative) {
return this.viewportServerSize.get();
}
const ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("safari") !== -1 && ua.indexOf("chrome") === -1) { // safari subtracts the scrollbar width
return {
width: this.windowRef.native.document.documentElement.clientWidth,
height: this.windowRef.native.document.documentElement.clientHeight,
};
}
return {
width: this.windowRef.native.innerWidth,
height: this.windowRef.native.innerHeight,
};
}
getSizeTypeInfo(width) {
const lastEntryIndex = this.sizeTypes.length - 1;
for (let idx = 0; idx < lastEntryIndex; idx++) {
const viewportSizeTypeInfo = this.sizeTypes[idx];
if (width <= viewportSizeTypeInfo.widthThreshold) {
return viewportSizeTypeInfo;
}
}
return this.sizeTypes[lastEntryIndex];
}
}
ViewportService.ɵprov = ɵɵdefineInjectable({ factory: function ViewportService_Factory() { return new ViewportService(ɵɵinject(WindowRef), ɵɵinject(ViewportServerSizeService), ɵɵinject(UX_CONFIG)); }, token: ViewportService, providedIn: "root" });
ViewportService.decorators = [
{ type: Injectable, args: [{
providedIn: "root",
},] }
];
ViewportService.ctorParameters = () => [
{ type: WindowRef },
{ type: ViewportServerSizeService },
{ type: undefined, decorators: [{ type: Inject, args: [UX_CONFIG,] }] }
];
class SsvViewportMatcherContext {

@@ -309,3 +303,3 @@ constructor() {

}
let SsvViewportMatcherDirective = class SsvViewportMatcherDirective {
class SsvViewportMatcherDirective {
constructor(viewport, renderer, _viewContainer, cdr, templateRef) {

@@ -321,3 +315,5 @@ this.viewport = viewport;

this._elseViewRef = null;
this.update$ = new Subject();
this.sizeType$$ = Subscription.EMPTY;
this.cssClass$$ = Subscription.EMPTY;
this._update$ = new Subject();
this._thenTemplateRef = templateRef;

@@ -327,3 +323,3 @@ }

// console.log("ssvViewportMatcher init");
this.update$$ = this.update$
this._update$
.pipe(

@@ -333,2 +329,3 @@ // tap(x => console.log(">>> ssvViewportMatcher - update triggered", x)),

// tap(x => console.log(">>> ssvViewportMatcher - updating...", x)),
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
tap(() => this._updateView(this.sizeInfo)), tap(() => this.cdr.markForCheck()))

@@ -339,9 +336,10 @@ .subscribe();

// tap(x => console.log("ssvViewportMatcher - sizeType changed", x)),
tap(x => (this.sizeInfo = x)), tap(() => this.update$.next(this._context)))
tap(x => this.sizeInfo = x), tap(() => this._update$.next(this._context)))
.subscribe();
this.cssClass$$ = this.viewport.sizeType$
.pipe(startWith(undefined), filter(() => !!(this._thenViewRef || this._elseViewRef)), pairwise(), tap(([prev, curr]) => {
var _a;
const el = this._thenViewRef
? this._thenViewRef.rootNodes[0]
: this._elseViewRef.rootNodes[0];
: (_a = this._elseViewRef) === null || _a === void 0 ? void 0 : _a.rootNodes[0];
if (!el.classList) {

@@ -353,3 +351,3 @@ return;

}
this.renderer.addClass(el, `ssv-vp-size--${curr.name}`);
this.renderer.addClass(el, `ssv-vp-size--${curr === null || curr === void 0 ? void 0 : curr.name}`);
}))

@@ -359,22 +357,13 @@ .subscribe();

ngOnDestroy() {
if (this.cssClass$$) {
this.cssClass$$.unsubscribe();
}
if (this.sizeType$$) {
this.sizeType$$.unsubscribe();
}
if (this.update$) {
this.update$.complete();
}
if (this.update$$) {
this.update$.unsubscribe();
}
this.cssClass$$.unsubscribe();
this.sizeType$$.unsubscribe();
this._update$.complete();
}
set ssvViewportMatcher(value) {
if (isViewportSizeMatcherExpression(value)) {
this._context.expresson = value;
this._context.expression = value;
}
else if (isViewportSizeMatcherTupleExpression(value)) {
const [op, size] = value;
this._context.expresson = {
this._context.expression = {
operation: op,

@@ -388,3 +377,3 @@ size

if (this.sizeInfo) {
this.update$.next(this._context);
this._update$.next(this._context);
}

@@ -395,3 +384,3 @@ }

if (this.sizeInfo) {
this.update$.next(this._context);
this._update$.next(this._context);
}

@@ -403,7 +392,7 @@ }

if (this.sizeInfo) {
this.update$.next(this._context);
this._update$.next(this._context);
}
}
_updateView(sizeInfo) {
if (isViewportConditionMatch(sizeInfo, this._context)) {
if (isViewportConditionMatch(sizeInfo, this._context, this.viewport.sizeTypeMap)) {
if (!this._thenViewRef) {

@@ -427,38 +416,29 @@ this._viewContainer.clear();

}
}
SsvViewportMatcherDirective.decorators = [
{ type: Directive, args: [{
selector: "[ssvViewportMatcher]",
exportAs: "ssvViewportMatcher",
},] }
];
SsvViewportMatcherDirective.ctorParameters = () => [
{ type: ViewportService },
{ type: Renderer2 },
{ type: ViewContainerRef },
{ type: ChangeDetectorRef },
{ type: TemplateRef }
];
SsvViewportMatcherDirective.propDecorators = {
ssvViewportMatcher: [{ type: Input }],
ssvViewportMatcherExclude: [{ type: Input }],
ssvViewportMatcherElse: [{ type: Input }]
};
__decorate([
Input(),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], SsvViewportMatcherDirective.prototype, "ssvViewportMatcher", null);
__decorate([
Input(),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], SsvViewportMatcherDirective.prototype, "ssvViewportMatcherExclude", null);
__decorate([
Input(),
__metadata("design:type", TemplateRef),
__metadata("design:paramtypes", [TemplateRef])
], SsvViewportMatcherDirective.prototype, "ssvViewportMatcherElse", null);
SsvViewportMatcherDirective = __decorate([
Directive({
selector: "[ssvViewportMatcher]",
exportAs: "ssvViewportMatcher",
}),
__metadata("design:paramtypes", [ViewportService,
Renderer2,
ViewContainerRef,
ChangeDetectorRef,
TemplateRef])
], SsvViewportMatcherDirective);
var SsvUxModule_1;
/** @internal */
const _MODULE_CONFIG = new InjectionToken("_ux-config");
const ɵ0 = UX_DEFAULT_CONFIG;
let SsvUxModule = SsvUxModule_1 = class SsvUxModule {
class SsvUxModule {
static forRoot(config) {
return {
ngModule: SsvUxModule_1,
ngModule: SsvUxModule,
providers: [

@@ -470,20 +450,22 @@ {

},
{ provide: _MODULE_CONFIG, useValue: config || UX_DEFAULT_CONFIG },
{ provide: _MODULE_CONFIG, useValue: config },
],
};
}
};
SsvUxModule = SsvUxModule_1 = __decorate([
NgModule({
declarations: [SsvViewportMatcherDirective],
providers: [
{ provide: UX_CONFIG, useValue: ɵ0 },
{ provide: WINDOW, useFactory: _window },
],
exports: [SsvViewportMatcherDirective],
})
], SsvUxModule);
}
SsvUxModule.decorators = [
{ type: NgModule, args: [{
declarations: [SsvViewportMatcherDirective],
providers: [
{ provide: UX_CONFIG, useValue: ɵ0 },
{ provide: WINDOW, useFactory: _window },
],
exports: [SsvViewportMatcherDirective],
},] }
];
/** @internal */
function _moduleConfigFactory(config) {
return typeof config === "function" ? config() : config;
const uxOptions = (typeof config === "function" ? config() : config) || UX_DEFAULT_CONFIG;
const viewport = Object.assign(Object.assign({}, UX_DEFAULT_CONFIG.viewport), uxOptions.viewport); // breakpoints shouldn't be merged
return { viewport };
}

@@ -498,3 +480,3 @@ /** @internal */

const VERSION = "1.1.1";
const VERSION = "1.2.0-dev102";

@@ -505,3 +487,3 @@ /**

export { COMPARISON_OPERATION_FUNC_MAPPING, ComparisonOperation, DeviceType, SsvUxModule, SsvViewportMatcherContext, SsvViewportMatcherDirective, UX_CONFIG, UX_DEFAULT_CONFIG, UX_VIEWPORT_SSR_DEVICE, VERSION, ViewportServerSizeService, ViewportService, ViewportSizeType, _MODULE_CONFIG, _moduleConfigFactory, _window, isViewportConditionMatch, isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, ɵ0, WINDOW as ɵa, WindowRef as ɵb };
export { COMPARISON_OPERATION_FUNC_MAPPING, ComparisonOperation, DeviceType, SsvUxModule, SsvViewportMatcherContext, SsvViewportMatcherDirective, UX_CONFIG, UX_DEFAULT_CONFIG, UX_VIEWPORT_DEFAULT_BREAKPOINTS, UX_VIEWPORT_SSR_DEVICE, VERSION, ViewportServerSizeService, ViewportService, ViewportSizeType, _MODULE_CONFIG, _moduleConfigFactory, _window, generateViewportSizeType, isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, ɵ0, UX_VIEWPORT_DEFAULT_CONFIG as ɵa, WINDOW as ɵb, WindowRef as ɵc };
//# sourceMappingURL=ssv-ngx.ux.js.map
export interface Dictionary<T> {
[key: string]: T;
}
export declare type PartialDeep<T> = {
[P in keyof T]?: PartialDeep<T[P]>;
};
import { ModuleWithProviders, InjectionToken } from "@angular/core";
import { UxOptions } from "./config";
import { PartialDeep } from "./internal/internal.model";
/** @internal */
export declare const _MODULE_CONFIG: InjectionToken<UxOptions | (() => UxOptions)>;
export declare const _MODULE_CONFIG: InjectionToken<UxOptions>;
export declare class SsvUxModule {
static forRoot(config?: Partial<UxOptions> | (() => Partial<UxOptions>)): ModuleWithProviders;
static forRoot(config?: PartialDeep<UxOptions> | (() => PartialDeep<UxOptions>)): ModuleWithProviders<SsvUxModule>;
}

@@ -11,2 +12,2 @@ /** @internal */

/** @internal */
export declare function _window(): any;
export declare function _window(): unknown;
{
"name": "@ssv/ngx.ux",
"version": "1.1.1",
"version": "1.2.0-dev102",
"versionSuffix": "",
"description": "UX essentials for building apps, utilities which enables you writing richer apps easier.",

@@ -25,3 +26,3 @@ "keywords": [

"dependencies": {
"tslib": "^1.9.0"
"tslib": "^1.10.0"
},

@@ -33,50 +34,9 @@ "peerDependencies": {

},
"devDependencies": {
"@angular/common": "^8.0.0",
"@angular/compiler": "^8.0.0",
"@angular/compiler-cli": "^8.0.0",
"@angular/core": "^8.0.0",
"@angular/platform-browser": "^8.0.0",
"@angular/platform-browser-dynamic": "^8.0.0",
"@ssv/tools": "^0.8.1",
"@types/jest": "^24.0.13",
"@types/lodash": "^4.14.134",
"gulp": "^4.0.2",
"gulp-bump": "^3.1.3",
"gulp-conventional-changelog": "^2.0.19",
"jest": "^24.8.0",
"jest-environment-node-debug": "^2.0.0",
"lodash": "^4.17.11",
"ng-packagr": "^5.3.0",
"reflect-metadata": "^0.1.13",
"require-dir": "^1.2.0",
"rimraf": "^2.6.3",
"rxjs": "^6.5.2",
"ts-jest": "^24.0.2",
"tsickle": "^0.35.0",
"tslint": "^5.17.0",
"typescript": "~3.4.5",
"yargs": "^13.2.4",
"zone.js": "^0.9.1"
},
"resolutions": {
"natives": "1.1.3"
},
"jest": {
"transform": {
".(ts|tsx)": "ts-jest"
},
"testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
"moduleFileExtensions": [
"ts",
"tsx",
"js"
]
},
"main": "bundles/ssv-ngx.ux.umd.js",
"module": "fesm5/ssv-ngx.ux.js",
"module": "fesm2015/ssv-ngx.ux.js",
"es2015": "fesm2015/ssv-ngx.ux.js",
"esm5": "esm5/ssv-ngx.ux.js",
"esm2015": "esm2015/ssv-ngx.ux.js",
"fesm5": "fesm5/ssv-ngx.ux.js",
"fesm2015": "fesm2015/ssv-ngx.ux.js",

@@ -83,0 +43,0 @@ "typings": "ssv-ngx.ux.d.ts",

@@ -7,5 +7,5 @@ import { InjectionToken } from "@angular/core";

/** Window underlying native object. */
readonly native: Window;
get native(): Window;
/** Determines whether native element is supported or not. Generally `false` when executing in SSR. */
readonly hasNative: boolean;
get hasNative(): boolean;
}

@@ -161,15 +161,47 @@ [projectUri]: https://github.com/sketch7/ngx.ux

## Configure
In order to configure globally, you can do so as following:
You can configure the existing resize polling speed and as well as provide your custom breakpoints.
### Custom Breakpoints
```ts
import { SsvUxModule } from "@ssv/ngx.ux";
import { SsvUxModule, generateViewportSizeType } from "@ssv/ngx.ux";
imports: [
SsvUxModule.forRoot({
viewport: { resizePollingSpeed: 66 }
}),
],
const breakpoints = { // custom breakpoints - key/width
smallest: 500,
small: 700,
medium: 1000,
large: 1400,
extralarge: 1600,
xxlarge: 1800,
fhd: 1920,
uhd: 3840
};
imports: [
SsvUxModule.forRoot({
viewport: {
resizePollingSpeed: 66, // optional - defaults to 33
breakpoints // provide the custom breakpoints
}
}),
],
```
### Override existing Breakpoints
```ts
import { SsvUxModule, UX_VIEWPORT_DEFAULT_BREAKPOINTS } from "@ssv/ngx.ux";
imports: [
SsvUxModule.forRoot({
viewport: {
breakpoints: {
...UX_VIEWPORT_DEFAULT_BREAKPOINTS, // use breakpoints provided with library
xxlarge1: 2000, // override xxlarge1
uhd: 3840 // add new breakpoint
}
}
}),
],
```
## Getting Started

@@ -176,0 +208,0 @@

@@ -5,2 +5,3 @@ /**

export * from './index';
export { WINDOW as ɵa, WindowRef as ɵb } from './platform/window';
export { WINDOW as ɵb, WindowRef as ɵc } from './platform/window';
export { UX_VIEWPORT_DEFAULT_CONFIG as ɵa } from './viewport/viewport.const';

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"SsvViewportMatcherContext":{"__symbolic":"class","members":{}},"SsvViewportMatcherDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":28,"character":1},"arguments":[{"selector":"[ssvViewportMatcher]","exportAs":"ssvViewportMatcher"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ViewportService"},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":48,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":49,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":50,"character":15},{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"SsvViewportMatcherContext"}]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ssvViewportMatcher":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":2}}]}],"ssvViewportMatcherExclude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":132,"character":2}}]}],"ssvViewportMatcherElse":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":140,"character":2}}]}],"_updateView":[{"__symbolic":"method"}]}},"UX_VIEWPORT_SSR_DEVICE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":23,"character":42},"arguments":["@ssv/ngx.ux-config/viewport/ssr-device"]},"ViewportServerSizeService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":15},"arguments":[{"__symbolic":"reference","name":"UX_VIEWPORT_SSR_DEVICE"}]}]],"parameters":[{"__symbolic":"reference","name":"DeviceType"}]}],"get":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ViewportSize":{"__symbolic":"interface"},"ViewportSizeType":{"xsmall":0,"small":1,"medium":2,"large":3,"xlarge":4,"xxlarge":5,"xxlarge1":6},"ViewportSizeTypeInfo":{"__symbolic":"interface"},"ComparisonOperation":{"equals":"=","notEquals":"<>","lessThan":"<","lessOrEqualThan":"<=","greaterThan":">","greaterOrEqualThan":">="},"DeviceType":{"desktop":"desktop","mobile":"mobile","tablet":"tablet"},"UxViewportOptions":{"__symbolic":"interface"},"ViewportMatchConditions":{"__symbolic":"interface"},"ViewportSizeMatcherExpression":{"__symbolic":"interface"},"ViewportService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":71,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":85,"character":3},"arguments":[{"__symbolic":"reference","name":"UX_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":86,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":86,"character":10}]}],null,null],"parameters":[{"__symbolic":"reference","name":"UxOptions"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ViewportServerSizeService"}]}],"calculateItemsPerRow":[{"__symbolic":"method"}],"getViewportSize":[{"__symbolic":"method"}],"calculateViewportSize":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"isViewportSizeMatcherExpression":{"__symbolic":"function"},"isViewportSizeMatcherTupleExpression":{"__symbolic":"function"},"COMPARISON_OPERATION_FUNC_MAPPING":{"__symbolic":"error","message":"Expression form not supported","line":38,"character":1,"module":"./viewport/viewport.util"},"isViewportConditionMatch":{"__symbolic":"function"},"UxOptions":{"__symbolic":"interface"},"UX_DEFAULT_CONFIG":{"viewport":{"resizePollingSpeed":33}},"UX_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":13,"character":29},"arguments":["@ssv/ngx.ux-config"]},"_MODULE_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":34},"arguments":["_ux-config"]},"SsvUxModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"SsvViewportMatcherDirective"}],"providers":[{"provide":{"__symbolic":"reference","name":"UX_CONFIG"},"useValue":{"__symbolic":"reference","name":"UX_DEFAULT_CONFIG"}},{"provide":{"__symbolic":"reference","name":"ɵa"},"useFactory":{"__symbolic":"reference","name":"_window"}}],"exports":[{"__symbolic":"reference","name":"SsvViewportMatcherDirective"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"SsvUxModule"},"providers":[{"provide":{"__symbolic":"reference","name":"UX_CONFIG"},"useFactory":{"__symbolic":"reference","name":"_moduleConfigFactory"},"deps":[{"__symbolic":"reference","name":"_MODULE_CONFIG"}]},{"provide":{"__symbolic":"reference","name":"_MODULE_CONFIG"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"config"},"right":{"__symbolic":"reference","name":"UX_DEFAULT_CONFIG"}}}]}}}},"_moduleConfigFactory":{"__symbolic":"function","parameters":["config"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":38,"character":8,"module":"./module"},"right":"function"},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"config"}},"elseExpression":{"__symbolic":"reference","name":"config"}}},"_window":{"__symbolic":"function"},"VERSION":"1.1.1","ɵa":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":26},"arguments":["Window"]},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":10,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵa"}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}]},"statics":{"ngInjectableDef":{}}}},"origins":{"SsvViewportMatcherContext":"./viewport/viewport-matcher.directive","SsvViewportMatcherDirective":"./viewport/viewport-matcher.directive","UX_VIEWPORT_SSR_DEVICE":"./viewport/viewport-server-size.service","ViewportServerSizeService":"./viewport/viewport-server-size.service","ViewportSize":"./viewport/viewport.model","ViewportSizeType":"./viewport/viewport.model","ViewportSizeTypeInfo":"./viewport/viewport.model","ComparisonOperation":"./viewport/viewport.model","DeviceType":"./viewport/viewport.model","UxViewportOptions":"./viewport/viewport.model","ViewportMatchConditions":"./viewport/viewport.model","ViewportSizeMatcherExpression":"./viewport/viewport.model","ViewportService":"./viewport/viewport.service","isViewportSizeMatcherExpression":"./viewport/viewport.util","isViewportSizeMatcherTupleExpression":"./viewport/viewport.util","COMPARISON_OPERATION_FUNC_MAPPING":"./viewport/viewport.util","isViewportConditionMatch":"./viewport/viewport.util","UxOptions":"./config","UX_DEFAULT_CONFIG":"./config","UX_CONFIG":"./config","_MODULE_CONFIG":"./module","SsvUxModule":"./module","_moduleConfigFactory":"./module","_window":"./module","VERSION":"./version","ɵa":"./platform/window","ɵb":"./platform/window"},"importAs":"@ssv/ngx.ux"}
{"__symbolic":"module","version":4,"metadata":{"ɵa":{"resizePollingSpeed":33,"breakpoints":{"__symbolic":"reference","name":"UX_VIEWPORT_DEFAULT_BREAKPOINTS"}},"SsvViewportMatcherContext":{"__symbolic":"class","members":{}},"SsvViewportMatcherDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":30,"character":1},"arguments":[{"selector":"[ssvViewportMatcher]","exportAs":"ssvViewportMatcher"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ViewportService"},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":49,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":50,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":51,"character":15},{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"SsvViewportMatcherContext"}]}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ssvViewportMatcher":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":107,"character":2}}]}],"ssvViewportMatcherExclude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":125,"character":2}}]}],"ssvViewportMatcherElse":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":2}}]}],"_updateView":[{"__symbolic":"method"}]}},"UX_VIEWPORT_SSR_DEVICE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":23,"character":42},"arguments":["@ssv/ngx.ux-config/viewport/ssr-device"]},"ViewportServerSizeService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":15},"arguments":[{"__symbolic":"reference","name":"UX_VIEWPORT_SSR_DEVICE"}]}]],"parameters":[{"__symbolic":"reference","name":"DeviceType"}]}],"get":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ViewportSizeType":{"xsmall":0,"small":1,"medium":2,"large":3,"xlarge":4,"xxlarge":5,"xxlarge1":6},"ComparisonOperation":{"equals":"=","notEquals":"<>","lessThan":"<","lessOrEqualThan":"<=","greaterThan":">","greaterOrEqualThan":">="},"DeviceType":{"desktop":"desktop","mobile":"mobile","tablet":"tablet"},"UxViewportOptions":{"__symbolic":"interface"},"ViewportSize":{"__symbolic":"interface"},"ViewportSizeTypeInfo":{"__symbolic":"interface"},"ViewportMatchConditions":{"__symbolic":"interface"},"ViewportSizeMatcherExpression":{"__symbolic":"interface"},"ViewportService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":41,"character":3},"arguments":[{"__symbolic":"reference","name":"UX_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ViewportServerSizeService"},{"__symbolic":"reference","name":"UxOptions"}]}],"calculateItemsPerRow":[{"__symbolic":"method"}],"getViewportSize":[{"__symbolic":"method"}],"getSizeTypeInfo":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"isViewportSizeMatcherExpression":{"__symbolic":"function"},"isViewportSizeMatcherTupleExpression":{"__symbolic":"function"},"COMPARISON_OPERATION_FUNC_MAPPING":{"__symbolic":"error","message":"Expression form not supported","line":36,"character":1,"module":"./viewport/viewport.util"},"generateViewportSizeType":{"__symbolic":"function","parameters":["breakpoints"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"freeze"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":83,"character":9,"context":{"name":"getSortedBreakpoints"},"module":"./viewport/viewport.util"}]}},"UX_VIEWPORT_DEFAULT_BREAKPOINTS":{"xsmall":450,"small":767,"medium":992,"large":1200,"xlarge":1500,"xxlarge":1920,"xxlarge1":2100},"UxOptions":{"__symbolic":"interface"},"UX_DEFAULT_CONFIG":{"viewport":{"__symbolic":"reference","name":"ɵa"}},"UX_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":12,"character":29},"arguments":["@ssv/ngx.ux-config"]},"_MODULE_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":8,"character":34},"arguments":["_ux-config"]},"SsvUxModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"SsvViewportMatcherDirective"}],"providers":[{"provide":{"__symbolic":"reference","name":"UX_CONFIG"},"useValue":{"__symbolic":"reference","name":"UX_DEFAULT_CONFIG"}},{"provide":{"__symbolic":"reference","name":"ɵb"},"useFactory":{"__symbolic":"reference","name":"_window"}}],"exports":[{"__symbolic":"reference","name":"SsvViewportMatcherDirective"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"SsvUxModule"},"providers":[{"provide":{"__symbolic":"reference","name":"UX_CONFIG"},"useFactory":{"__symbolic":"reference","name":"_moduleConfigFactory"},"deps":[{"__symbolic":"reference","name":"_MODULE_CONFIG"}]},{"provide":{"__symbolic":"reference","name":"_MODULE_CONFIG"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"_moduleConfigFactory":{"__symbolic":"function"},"_window":{"__symbolic":"function"},"VERSION":"1.2.0-dev102","ɵb":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":26},"arguments":["Window"]},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":11,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵb"}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}]},"statics":{"ɵprov":{}}}},"origins":{"ɵa":"./viewport/viewport.const","SsvViewportMatcherContext":"./viewport/viewport-matcher.directive","SsvViewportMatcherDirective":"./viewport/viewport-matcher.directive","UX_VIEWPORT_SSR_DEVICE":"./viewport/viewport-server-size.service","ViewportServerSizeService":"./viewport/viewport-server-size.service","ViewportSizeType":"./viewport/viewport.model","ComparisonOperation":"./viewport/viewport.model","DeviceType":"./viewport/viewport.model","UxViewportOptions":"./viewport/viewport.model","ViewportSize":"./viewport/viewport.model","ViewportSizeTypeInfo":"./viewport/viewport.model","ViewportMatchConditions":"./viewport/viewport.model","ViewportSizeMatcherExpression":"./viewport/viewport.model","ViewportService":"./viewport/viewport.service","isViewportSizeMatcherExpression":"./viewport/viewport.util","isViewportSizeMatcherTupleExpression":"./viewport/viewport.util","COMPARISON_OPERATION_FUNC_MAPPING":"./viewport/viewport.util","generateViewportSizeType":"./viewport/viewport.util","UX_VIEWPORT_DEFAULT_BREAKPOINTS":"./viewport/viewport.const","UxOptions":"./config","UX_DEFAULT_CONFIG":"./config","UX_CONFIG":"./config","_MODULE_CONFIG":"./module","SsvUxModule":"./module","_moduleConfigFactory":"./module","_window":"./module","VERSION":"./version","ɵb":"./platform/window","ɵc":"./platform/window"},"importAs":"@ssv/ngx.ux"}

@@ -1,1 +0,1 @@

export declare const VERSION = "1.1.1";
export declare const VERSION = "1.2.0-dev102";

@@ -5,2 +5,3 @@ export * from "./viewport-matcher.directive";

export * from "./viewport.service";
export * from "./viewport.util";
export { isViewportSizeMatcherExpression, isViewportSizeMatcherTupleExpression, COMPARISON_OPERATION_FUNC_MAPPING, generateViewportSizeType, } from "./viewport.util";
export { UX_VIEWPORT_DEFAULT_BREAKPOINTS } from "./viewport.const";

@@ -7,3 +7,3 @@ import { OnInit, OnDestroy, Renderer2, ViewContainerRef, TemplateRef, ChangeDetectorRef } from "@angular/core";

sizeTypeExclude: string | string[] | null;
expresson?: ViewportSizeMatcherExpression;
expression?: ViewportSizeMatcherExpression;
}

@@ -15,2 +15,3 @@ export declare class SsvViewportMatcherDirective implements OnInit, OnDestroy {

private cdr;
sizeInfo: ViewportSizeTypeInfo | undefined;
private _context;

@@ -22,13 +23,11 @@ private _thenTemplateRef;

private sizeType$$;
private update$$;
private cssClass$$;
private update$;
sizeInfo: ViewportSizeTypeInfo | undefined;
private readonly _update$;
constructor(viewport: ViewportService, renderer: Renderer2, _viewContainer: ViewContainerRef, cdr: ChangeDetectorRef, templateRef: TemplateRef<SsvViewportMatcherContext>);
ngOnInit(): void;
ngOnDestroy(): void;
ssvViewportMatcher: string | string[] | ViewportSizeMatcherExpression;
ssvViewportMatcherExclude: string | string[];
ssvViewportMatcherElse: TemplateRef<SsvViewportMatcherContext> | null;
set ssvViewportMatcher(value: string | string[] | ViewportSizeMatcherExpression);
set ssvViewportMatcherExclude(value: string | string[]);
set ssvViewportMatcherElse(templateRef: TemplateRef<SsvViewportMatcherContext> | null);
private _updateView;
}

@@ -0,2 +1,5 @@

import { Dictionary } from "../internal/internal.model";
import { UxViewportOptions } from "./viewport.model";
/** Default viewport breakpoints. */
export declare const UX_VIEWPORT_DEFAULT_BREAKPOINTS: Dictionary<number>;
export declare const UX_VIEWPORT_DEFAULT_CONFIG: UxViewportOptions;

@@ -1,5 +0,6 @@

export interface ViewportSize {
width: number;
height: number;
}
import { Dictionary } from "../internal/internal.model";
/**
* The indices of each breakpoint provided based on the `UX_VIEWPORT_DEFAULT_BREAKPOINTS`.
* @see UX_VIEWPORT_DEFAULT_BREAKPOINTS
*/
export declare enum ViewportSizeType {

@@ -14,7 +15,2 @@ xsmall = 0,

}
export interface ViewportSizeTypeInfo {
type: ViewportSizeType;
name: string;
widthThreshold: number;
}
export declare enum ComparisonOperation {

@@ -36,7 +32,20 @@ equals = "=",

resizePollingSpeed: number;
/** Breakpoints to use. Key needs to match the size type and the value the width threshold.
* e.g. given width '1000' and `medium` is set to '992' => `large`.
*/
breakpoints: Dictionary<number>;
}
export interface ViewportSize {
width: number;
height: number;
}
export interface ViewportSizeTypeInfo {
type: number;
name: string;
widthThreshold: number;
}
export interface ViewportMatchConditions {
sizeType?: string | string[] | null;
sizeTypeExclude?: string | string[] | null;
expresson?: ViewportSizeMatcherExpression;
expression?: ViewportSizeMatcherExpression;
}

@@ -43,0 +52,0 @@ export interface ViewportSizeMatcherExpression {

@@ -6,4 +6,4 @@ import { Observable } from "rxjs";

import { ViewportServerSizeService } from "./viewport-server-size.service";
import { Dictionary } from "../internal/internal.model";
export declare class ViewportService {
private document;
private windowRef;

@@ -15,5 +15,9 @@ private viewportServerSize;

sizeType$: Observable<ViewportSizeTypeInfo>;
private lastWidthCheck;
private lastWidthSizeInfo;
constructor(config: UxOptions, document: any, windowRef: WindowRef, viewportServerSize: ViewportServerSizeService);
/** Size types refs of the generated viewport size type info. */
get sizeTypeMap(): Dictionary<ViewportSizeTypeInfo>;
/** Viewport size types list ordered by type, smallest to largest. */
get sizeTypes(): ViewportSizeTypeInfo[];
private _sizeTypeMap;
private _sizeTypes;
constructor(windowRef: WindowRef, viewportServerSize: ViewportServerSizeService, config: UxOptions);
/**

@@ -26,4 +30,5 @@ * Calculates amount of items that fits into container's width.

calculateItemsPerRow(containerWidth: number, itemWidth: number): number;
/** Returns the current viewport size */
private getViewportSize;
private calculateViewportSize;
private getSizeTypeInfo;
}

@@ -6,2 +6,20 @@ import { Dictionary } from "../internal/internal.model";

export declare const COMPARISON_OPERATION_FUNC_MAPPING: Dictionary<(a: number, b: number) => boolean>;
export declare function isViewportConditionMatch(evaluteSize: ViewportSizeTypeInfo, conditions: ViewportMatchConditions): boolean;
export declare function isViewportConditionMatch(evaluateSize: ViewportSizeTypeInfo, conditions: ViewportMatchConditions, viewportSizeTypeInfoRefs: Dictionary<ViewportSizeTypeInfo>): boolean;
/**
* A util function which generates the ViewportSizeTypeInfo.type for each breakpoint.
* @param breakpoints the custom breakpoints
*/
export declare function generateViewportSizeType<T extends Record<string, number>>(breakpoints: T): T & Record<number, string>;
/**
* Pre-processes the given breakpoints into an ordered list from smallest to largest while generating
* all the necessary information on the viewport.
* @param breakpoints the breakpoints obtained from the config
* @internal
*/
export declare function generateViewportSizeTypeInfoList(breakpoints: Dictionary<number>): ViewportSizeTypeInfo[];
/**
* Converts the breakpoint list into a dictionary while using the name as key.
* @param breakpointList the list of breakpoints
* @internal
*/
export declare function generateViewportSizeTypeInfoRefs(breakpointList: ViewportSizeTypeInfo[]): Dictionary<ViewportSizeTypeInfo>;

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc