ice-utilities
Version:
Utilities for manage arrays, breadcrumb, dom elements, dates, injectors, local storage, login, objects, router animations, router, session storage, strings and translate utilities, encryption, for angular 6+ with ECMAScript 6 - ECMAScript 2015
353 lines • 21.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { SessionUtils } from './sessionUtils';
import { StringUtils } from './stringUtils';
import { ObjectUtils } from './objectUtils';
import { TranslateUtils } from './translateUtils';
import notify from 'devextreme/ui/notify';
// @dynamic
/**
* @abstract
*/
var GlobalUtils = /** @class */ (function () {
function GlobalUtils() {
}
/**
* @param {?} responsiveWidth
* @return {?}
*/
GlobalUtils.setResponsiveWidth = /**
* @param {?} responsiveWidth
* @return {?}
*/
function (responsiveWidth) {
if (!this.responsiveWidth && responsiveWidth) {
this.responsiveWidth = responsiveWidth;
}
};
/**
* @param {?} timeshow
* @return {?}
*/
GlobalUtils.setTimeShow = /**
* @param {?} timeshow
* @return {?}
*/
function (timeshow) {
if (!this.timeshow && timeshow) {
this.timeshow = timeshow;
}
};
/**
* @param {?} obj1
* @param {?} obj2
* @return {?}
*/
GlobalUtils.areEquals = /**
* @param {?} obj1
* @param {?} obj2
* @return {?}
*/
function (obj1, obj2) {
return JSON.stringify(obj1) === JSON.stringify(obj2);
};
/**
* @param {?} data
* @return {?}
*/
GlobalUtils.isEmptyData = /**
* @param {?} data
* @return {?}
*/
function (data) {
return (this.areEquals(data, '') || this.areEquals(data, 0) || data === null || this.areEquals(data, {}) || this.areEquals(data, []));
};
/**
* @param {?} data
* @return {?}
*/
GlobalUtils.isUndefined = /**
* @param {?} data
* @return {?}
*/
function (data) {
return typeof data === 'undefined';
};
/**
* @param {?} name
* @return {?}
*/
GlobalUtils.setSysname = /**
* @param {?} name
* @return {?}
*/
function (name) {
SessionUtils.setSession('sysname', name);
};
/**
* @return {?}
*/
GlobalUtils.getSysname = /**
* @return {?}
*/
function () {
return SessionUtils.getSession('sysname');
};
/**
* @param {?} width
* @param {?} actstt
* @return {?}
*/
GlobalUtils.autoFixSidebarState = /**
* @param {?} width
* @param {?} actstt
* @return {?}
*/
function (width, actstt) {
if (width <= this.responsiveWidth) {
return 'inres';
}
else {
if (actstt === 'inres') {
return 'out';
}
else {
return actstt;
}
}
};
/**
* @param {?} stt
* @param {?} width
* @param {?} actstt
* @param {?} responsiveWidth
* @return {?}
*/
GlobalUtils.fixsidebarState = /**
* @param {?} stt
* @param {?} width
* @param {?} actstt
* @param {?} responsiveWidth
* @return {?}
*/
function (stt, width, actstt, responsiveWidth) {
if (width <= responsiveWidth) {
if (actstt === 'inres') {
return 'in';
}
else {
return 'inres';
}
}
else {
return stt;
}
};
/**
* @param {?} stt
* @param {?} width
* @param {?} responsiveWidth
* @return {?}
*/
GlobalUtils.fixContainerState = /**
* @param {?} stt
* @param {?} width
* @param {?} responsiveWidth
* @return {?}
*/
function (stt, width, responsiveWidth) {
if (width <= responsiveWidth) {
return 'inres';
}
else {
return stt;
}
};
/**
* @param {?} men
* @param {?} data
* @return {?}
*/
GlobalUtils.successNotify = /**
* @param {?} men
* @param {?} data
* @return {?}
*/
function (men, data) {
notify(TranslateUtils.Translate(men) + ' '
+ JSON.stringify(data), 'success', this.timeshow);
};
/**
* @param {?} error
* @param {?} men
* @param {?=} type
* @return {?}
*/
GlobalUtils.cathNotify = /**
* @param {?} error
* @param {?} men
* @param {?=} type
* @return {?}
*/
function (error, men, type) {
if (type === void 0) { type = 'warning'; }
/** @type {?} */
var tmen = TranslateUtils.Translate(men);
this.notifyError(tmen, error, type);
};
/**
* @private
* @param {?} tmen
* @param {?} error
* @param {?} type
* @return {?}
*/
GlobalUtils.notifyError = /**
* @private
* @param {?} tmen
* @param {?} error
* @param {?} type
* @return {?}
*/
function (tmen, error, type) {
notify(tmen + " :" + this.errorCath(error), type, this.timeshow);
if (type === 'error') {
throw new Error(tmen);
}
};
/**
* @param {?} error
* @param {?} men
* @param {?} extraMen
* @param {?=} type
* @return {?}
*/
GlobalUtils.cathNotifyExtraMen = /**
* @param {?} error
* @param {?} men
* @param {?} extraMen
* @param {?=} type
* @return {?}
*/
function (error, men, extraMen, type) {
if (type === void 0) { type = 'warning'; }
/** @type {?} */
var tmen = TranslateUtils.Translate(men) + " " + extraMen;
this.notifyError(tmen, error, type);
};
/**
* @param {?} error
* @return {?}
*/
GlobalUtils.errorCath = /**
* @param {?} error
* @return {?}
*/
function (error) {
/** @type {?} */
var errorMen = '';
if (StringUtils.isString(error)) {
errorMen = error;
}
else if (ObjectUtils.isObject(error)) {
if (error.error) {
if (StringUtils.isString(error.error)) {
errorMen = error.error;
}
else if (ObjectUtils.isObject(error.error) && error.error.ResponseStatus) {
if (error.error.ResponseStatus.Message) {
errorMen = error.error.ResponseStatus.Message;
}
else if (error.error.ResponseStatus.ErrorCode) {
errorMen = error.error.ResponseStatus.ErrorCode;
}
}
else if (StringUtils.isString(error.message)) {
errorMen = error.message;
}
}
else {
if (error.message) {
errorMen = error.message;
}
else if (error.statusText) {
errorMen = error.statusText;
}
}
}
return TranslateUtils.Translate(errorMen);
};
/**
* @return {?}
*/
GlobalUtils.getNativeWindow = /**
* @return {?}
*/
function () {
return window;
};
/**
* @param {?} url
* @param {?=} config
* @return {?}
*/
GlobalUtils.openWindow = /**
* @param {?} url
* @param {?=} config
* @return {?}
*/
function (url, config) {
return window.open(url, '', 'location=no,width=1800,height=900,scrollbars=yes,top=100,left=700,resizable = no');
};
/**
* @param {?=} whm
* @return {?}
*/
GlobalUtils.setWithHeight = /**
* @param {?=} whm
* @return {?}
*/
function (whm) {
if (whm && whm.fullScreen) {
return {
fullscreen: 1,
};
}
/** @type {?} */
var mm = 1.5;
if (whm && whm.Media) {
mm = whm.Media;
}
/** @type {?} */
var val = {
width: window.innerWidth / mm,
height: window.innerHeight / mm
};
if (whm && whm.hasOwnProperty('width')) {
val.width = whm.width;
}
if (whm && whm.hasOwnProperty('height')) {
val.height = whm.height;
}
return val;
};
GlobalUtils.responsiveWidth = 960;
GlobalUtils.timeshow = 8000;
return GlobalUtils;
}());
export { GlobalUtils };
if (false) {
/**
* @type {?}
* @private
*/
GlobalUtils.responsiveWidth;
/**
* @type {?}
* @private
*/
GlobalUtils.timeshow;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsVXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pY2UtdXRpbGl0aWVzLyIsInNvdXJjZXMiOlsibGliL3V0aWxpdGllcy9nbG9iYWxVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxNQUFNLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBRzFDO0lBQUE7SUFrSUEsQ0FBQzs7Ozs7SUEvSFEsOEJBQWtCOzs7O0lBQXpCLFVBQTBCLGVBQXVCO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLGVBQWUsRUFBRTtZQUM1QyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztTQUN4QztJQUNILENBQUM7Ozs7O0lBQ00sdUJBQVc7Ozs7SUFBbEIsVUFBbUIsUUFBZ0I7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7Ozs7O0lBQ00scUJBQVM7Ozs7O0lBQWhCLFVBQWlCLElBQVMsRUFBRSxJQUFTO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Ozs7O0lBQ00sdUJBQVc7Ozs7SUFBbEIsVUFBbUIsSUFBUztRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVB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QUFDO0lBaEljLDJCQUFlLEdBQUcsR0FBRyxDQUFDO0lBQ3RCLG9CQUFRLEdBQUcsSUFBSSxDQUFDO0lBZ0lqQyxrQkFBQztDQUFBLEFBbElELElBa0lDO1NBbElxQixXQUFXOzs7Ozs7SUFDL0IsNEJBQXFDOzs7OztJQUNyQyxxQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Nlc3Npb25VdGlsc30gZnJvbSAnLi9zZXNzaW9uVXRpbHMnO1xyXG5pbXBvcnQge1N0cmluZ1V0aWxzfSBmcm9tICcuL3N0cmluZ1V0aWxzJztcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSAnLi9vYmplY3RVdGlscyc7XHJcbmltcG9ydCB7VHJhbnNsYXRlVXRpbHN9IGZyb20gJy4vdHJhbnNsYXRlVXRpbHMnO1xyXG5pbXBvcnQgbm90aWZ5IGZyb20gJ2RldmV4dHJlbWUvdWkvbm90aWZ5JztcclxuaW1wb3J0IHtXaWR0aEhlaWdodE1lZH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9XaWR0aEhlaWdodE1lZCc7XHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHbG9iYWxVdGlscyB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVzcG9uc2l2ZVdpZHRoID0gOTYwO1xyXG4gIHByaXZhdGUgc3RhdGljIHRpbWVzaG93ID0gODAwMDtcclxuICBzdGF0aWMgc2V0UmVzcG9uc2l2ZVdpZHRoKHJlc3BvbnNpdmVXaWR0aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucmVzcG9uc2l2ZVdpZHRoICYmIHJlc3BvbnNpdmVXaWR0aCkge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpdmVXaWR0aCA9IHJlc3BvbnNpdmVXaWR0aDtcclxuICAgIH1cclxuICB9XHJcbiAgc3RhdGljIHNldFRpbWVTaG93KHRpbWVzaG93OiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy50aW1lc2hvdyAmJiB0aW1lc2hvdykge1xyXG4gICAgICB0aGlzLnRpbWVzaG93ID0gdGltZXNob3c7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBhcmVFcXVhbHMob2JqMTogYW55LCBvYmoyOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmoxKSA9PT0gSlNPTi5zdHJpbmdpZnkob2JqMik7XHJcbiAgfVxyXG4gIHN0YXRpYyBpc0VtcHR5RGF0YShkYXRhOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5hcmVFcXVhbHMoZGF0YSwgJycpIHx8IHRoaXMuYXJlRXF1YWxzKGRhdGEsIDApIHx8IGRhdGEgID09PSBudWxsIHx8IHRoaXMuYXJlRXF1YWxzKGRhdGEsIHt9KSB8fCB0aGlzLmFyZUVxdWFscyhkYXRhLCBbXSkpO1xyXG4gIH1cclxuICBzdGF0aWMgaXNVbmRlZmluZWQoZGF0YTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICd1bmRlZmluZWQnO1xyXG4gIH1cclxuICBzdGF0aWMgc2V0U3lzbmFtZSAobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBTZXNzaW9uVXRpbHMuc2V0U2Vzc2lvbignc3lzbmFtZScsIG5hbWUpO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0U3lzbmFtZSAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTZXNzaW9uVXRpbHMuZ2V0U2Vzc2lvbignc3lzbmFtZScpO1xyXG4gIH1cclxuICBzdGF0aWMgYXV0b0ZpeFNpZGViYXJTdGF0ZSAod2lkdGg6IG51bWJlciwgYWN0c3R0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHdpZHRoIDw9IHRoaXMucmVzcG9uc2l2ZVdpZHRoKSB7XHJcbiAgICAgIHJldHVybiAnaW5yZXMnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGFjdHN0dCA9PT0gJ2lucmVzJykge1xyXG4gICAgICAgIHJldHVybiAnb3V0JztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYWN0c3R0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBmaXhzaWRlYmFyU3RhdGUgKHN0dDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBhY3RzdHQ6IHN0cmluZywgcmVzcG9uc2l2ZVdpZHRoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHdpZHRoIDw9IHJlc3BvbnNpdmVXaWR0aCkge1xyXG4gICAgICBpZiAoYWN0c3R0ID09PSAnaW5yZXMnKSB7XHJcbiAgICAgICAgcmV0dXJuICdpbic7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdpbnJlcyc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBzdHQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBmaXhDb250YWluZXJTdGF0ZSAoc3R0OiBzdHJpbmcsIHdpZHRoOiBudW1iZXIsIHJlc3BvbnNpdmVXaWR0aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh3aWR0aCA8PSByZXNwb25zaXZlV2lkdGgpIHtcclxuICAgICAgcmV0dXJuICdpbnJlcyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gc3R0O1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgc3VjY2Vzc05vdGlmeShtZW46IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICBub3RpZnkoVHJhbnNsYXRlVXRpbHMuVHJhbnNsYXRlKG1lbikgKyAnICdcclxuICAgICAgKyBKU09OLnN0cmluZ2lmeShkYXRhKSwgJ3N1Y2Nlc3MnLCB0aGlzLnRpbWVzaG93KTtcclxuICB9XHJcbiAgc3RhdGljIGNhdGhOb3RpZnkgKGVycm9yLCBtZW46IHN0cmluZywgdHlwZSA9ICd3YXJuaW5nJyk6IHZvaWQge1xyXG4gICAgICBjb25zdCB0bWVuID0gVHJhbnNsYXRlVXRpbHMuVHJhbnNsYXRlKG1lbik7XHJcbiAgICAgIHRoaXMubm90aWZ5RXJyb3IodG1lbiwgZXJyb3IsIHR5cGUpO1xyXG4gIH1cclxuICBwcml2YXRlIHN0YXRpYyBub3RpZnlFcnJvciAodG1lbjogc3RyaW5nLCBlcnJvcjogc3RyaW5nLCB0eXBlOiBzdHJpbmcpIHtcclxuICAgICAgbm90aWZ5KGAke3RtZW59IDoke3RoaXMuZXJyb3JDYXRoKGVycm9yKX1gLCB0eXBlLCB0aGlzLnRpbWVzaG93KTtcclxuICAgICAgaWYgKHR5cGUgPT09ICdlcnJvcicpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0bWVuKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBzdGF0aWMgY2F0aE5vdGlmeUV4dHJhTWVuIChlcnJvciwgbWVuOiBzdHJpbmcsIGV4dHJhTWVuOiBzdHJpbmcsIHR5cGUgPSAnd2FybmluZycpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRtZW4gPSBgJHtUcmFuc2xhdGVVdGlscy5UcmFuc2xhdGUobWVuKX0gJHtleHRyYU1lbn1gO1xyXG4gICAgdGhpcy5ub3RpZnlFcnJvcih0bWVuLCBlcnJvciwgdHlwZSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBlcnJvckNhdGggKGVycm9yOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgbGV0IGVycm9yTWVuID0gJyc7XHJcbiAgICBpZiAoU3RyaW5nVXRpbHMuaXNTdHJpbmcoZXJyb3IpKSB7XHJcbiAgICAgIGVycm9yTWVuID0gZXJyb3I7XHJcbiAgICB9IGVsc2UgIGlmIChPYmplY3RVdGlscy5pc09iamVjdChlcnJvcikpIHtcclxuICAgICAgaWYgKGVycm9yLmVycm9yKSB7XHJcbiAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzU3RyaW5nKGVycm9yLmVycm9yKSkge1xyXG4gICAgICAgICAgZXJyb3JNZW4gPSBlcnJvci5lcnJvcjtcclxuICAgICAgICB9IGVsc2UgaWYgKE9iamVjdFV0aWxzLmlzT2JqZWN0KGVycm9yLmVycm9yKSAmJiBlcnJvci5lcnJvci5SZXNwb25zZVN0YXR1cykge1xyXG4gICAgICAgICAgaWYgKGVycm9yLmVycm9yLlJlc3BvbnNlU3RhdHVzLk1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgZXJyb3JNZW4gPSBlcnJvci5lcnJvci5SZXNwb25zZVN0YXR1cy5NZXNzYWdlO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChlcnJvci5lcnJvci5SZXNwb25zZVN0YXR1cy5FcnJvckNvZGUpIHtcclxuICAgICAgICAgICAgZXJyb3JNZW4gPSBlcnJvci5lcnJvci5SZXNwb25zZVN0YXR1cy5FcnJvckNvZGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChTdHJpbmdVdGlscy5pc1N0cmluZyhlcnJvci5tZXNzYWdlKSkge1xyXG4gICAgICAgICAgZXJyb3JNZW4gPSBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSkge1xyXG4gICAgICAgICAgZXJyb3JNZW4gPSBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3RhdHVzVGV4dCkge1xyXG4gICAgICAgICAgZXJyb3JNZW4gPSBlcnJvci5zdGF0dXNUZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFRyYW5zbGF0ZVV0aWxzLlRyYW5zbGF0ZShlcnJvck1lbik7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXROYXRpdmVXaW5kb3cgKCk6IFdpbmRvdyB7XHJcbiAgICByZXR1cm4gd2luZG93O1xyXG4gIH1cclxuICBzdGF0aWMgb3BlbldpbmRvdyh1cmw6IHN0cmluZywgY29uZmlnPzogYW55KTogV2luZG93IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gd2luZG93Lm9wZW4odXJsLCAnJywgJ2xvY2F0aW9uPW5vLHdpZHRoPTE4MDAsaGVpZ2h0PTkwMCxzY3JvbGxiYXJzPXllcyx0b3A9MTAwLGxlZnQ9NzAwLHJlc2l6YWJsZSA9IG5vJyk7XHJcbiAgfVxyXG4gIHN0YXRpYyBzZXRXaXRoSGVpZ2h0ICh3aG0/OiBXaWR0aEhlaWdodE1lZCk6IGFueSB7XHJcbiAgICBpZiAod2htICYmIHdobS5mdWxsU2NyZWVuKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZnVsbHNjcmVlbjogMSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG1tID0gMS41O1xyXG4gICAgaWYgKHdobSAmJiB3aG0uTWVkaWEpIHtcclxuICAgICAgbW0gPSB3aG0uTWVkaWE7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2YWwgPSB7XHJcbiAgICAgIHdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCAvIG1tLFxyXG4gICAgICBoZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodCAvIG1tXHJcbiAgICB9O1xyXG4gICAgaWYgKHdobSAmJiB3aG0uaGFzT3duUHJvcGVydHkoJ3dpZHRoJykpIHtcclxuICAgICAgdmFsLndpZHRoID0gd2htLndpZHRoO1xyXG4gICAgfVxyXG4gICAgaWYgKHdobSAmJiB3aG0uaGFzT3duUHJvcGVydHkoJ2hlaWdodCcpKSB7XHJcbiAgICAgIHZhbC5oZWlnaHQgPSB3aG0uaGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcbn1cclxuIl19