UNPKG

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
/** * @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