@kushki/ng-suka
Version:
<p align="center"> <h1 align="center">Suka Components Angular</h1> <p align="center"> An Angular implementation of the Suka Design System </p> </p>
246 lines • 24.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
// tslint:disable: variable-name
/**
* @record
*/
export function Config() { }
if (false) {
/** @type {?|undefined} */
Config.prototype.input;
/** @type {?|undefined} */
Config.prototype.position;
}
/**
* @param {?=} config
* @return {?}
*/
function rangePlugin(config) {
if (config === void 0) { config = {}; }
return (/**
* @param {?} fp
* @return {?}
*/
function (fp) {
/** @type {?} */
var dateFormat = '';
/** @type {?} */
var secondInput;
/** @type {?} */
var _secondInputFocused;
/** @type {?} */
var _prevDates;
/** @type {?} */
var createSecondInput = (/**
* @return {?}
*/
function () {
if (config.input) {
secondInput =
config.input instanceof Element
? config.input
: ((/** @type {?} */ (window.document.querySelector(config.input))));
}
else {
secondInput = (/** @type {?} */ (fp._input.cloneNode()));
secondInput.removeAttribute('id');
secondInput._flatpickr = undefined;
}
if (secondInput.value) {
/** @type {?} */
var parsedDate = fp.parseDate(secondInput.value);
if (parsedDate) {
fp.selectedDates.push(parsedDate);
}
}
secondInput.setAttribute('data-fp-omit', '');
fp._bind(secondInput, ['focus', 'click'], (/**
* @return {?}
*/
function () {
if (fp.selectedDates[1]) {
fp.latestSelectedDateObj = fp.selectedDates[1];
fp._setHoursFromDate(fp.selectedDates[1]);
fp.jumpToDate(fp.selectedDates[1]);
}
_secondInputFocused = true;
fp.isOpen = false;
fp.open(undefined, config.position === 'left' ? fp._input : secondInput);
}));
fp._bind(fp._input, ['focus', 'click'], (/**
* @param {?} e
* @return {?}
*/
function (e) {
e.preventDefault();
fp.isOpen = false;
fp.open();
}));
if (fp.config.allowInput) {
fp._bind(secondInput, 'keydown', (/**
* @param {?} e
* @return {?}
*/
function (e) {
if (((/** @type {?} */ (e))).key === 'Enter') {
fp.setDate([fp.selectedDates[0], secondInput.value], true, dateFormat);
secondInput.click();
}
}));
}
if (!config.input) {
fp._input.parentNode &&
fp._input.parentNode.insertBefore(secondInput, fp._input.nextSibling);
}
});
/** @type {?} */
var plugin = {
onParseConfig: /**
* @return {?}
*/
function () {
fp.config.mode = 'range';
dateFormat = fp.config.altInput
? fp.config.altFormat
: fp.config.dateFormat;
},
onReady: /**
* @return {?}
*/
function () {
createSecondInput();
fp.config.ignoredFocusElements.push(secondInput);
if (fp.config.allowInput) {
fp._input.removeAttribute('readonly');
secondInput.removeAttribute('readonly');
}
else {
secondInput.setAttribute('readonly', 'readonly');
}
fp._bind(fp._input, 'focus', (/**
* @return {?}
*/
function () {
fp.latestSelectedDateObj = fp.selectedDates[0];
fp._setHoursFromDate(fp.selectedDates[0]);
_secondInputFocused = false;
fp.jumpToDate(fp.selectedDates[0]);
}));
if (fp.config.allowInput) {
fp._bind(fp._input, 'keydown', (/**
* @param {?} e
* @return {?}
*/
function (e) {
if (((/** @type {?} */ (e))).key === 'Enter') {
fp.setDate([fp._input.value, fp.selectedDates[1]], true, dateFormat);
}
}));
}
fp.setDate(fp.selectedDates, false);
plugin.onValueUpdate(fp.selectedDates);
fp.loadedPlugins.push('range');
},
onPreCalendarPosition: /**
* @return {?}
*/
function () {
if (_secondInputFocused) {
fp._positionElement = secondInput;
setTimeout((/**
* @return {?}
*/
function () {
fp._positionElement = fp._input;
}), 0);
}
},
onChange: /**
* @return {?}
*/
function () {
if (!fp.selectedDates.length) {
setTimeout((/**
* @return {?}
*/
function () {
if (fp.selectedDates.length) {
return;
}
secondInput.value = '';
_prevDates = [];
}), 10);
}
if (_secondInputFocused) {
setTimeout((/**
* @return {?}
*/
function () {
secondInput.focus();
}), 0);
}
},
onDestroy: /**
* @return {?}
*/
function () {
if (!config.input) {
secondInput.parentNode &&
secondInput.parentNode.removeChild(secondInput);
}
},
onValueUpdate: /**
* @param {?} selDates
* @return {?}
*/
function (selDates) {
var _a, _b, _c;
if (!secondInput) {
return;
}
_prevDates =
!_prevDates || selDates.length >= _prevDates.length
? tslib_1.__spread(selDates) : _prevDates;
/** @type {?} */
var newDates;
if (_prevDates.length > selDates.length) {
/** @type {?} */
var newSelectedDate = selDates[0];
newDates = _secondInputFocused
? [_prevDates[0], newSelectedDate]
: [newSelectedDate, _prevDates[1]];
if (newDates[0].getTime() > newDates[1].getTime()) {
if (_secondInputFocused) {
newDates[0] = newDates[1];
}
else {
newDates[1] = newDates[0];
}
}
fp.setDate(newDates, false);
_prevDates = tslib_1.__spread(newDates);
}
else if (selDates.length === 2) {
newDates = selDates;
fp.setDate(newDates, false);
_prevDates = tslib_1.__spread(newDates);
/** @type {?} */
var changeEvent = document.createEvent('HTMLEvents');
changeEvent.initEvent('change', false, true);
fp._input.dispatchEvent(changeEvent);
}
_a = tslib_1.__read(fp.selectedDates.map((/**
* @param {?} d
* @return {?}
*/
function (d) { return fp.formatDate(d, dateFormat); })), 2), _b = _a[0], fp._input.value = _b === void 0 ? '' : _b, _c = _a[1], secondInput.value = _c === void 0 ? '' : _c;
},
};
return plugin;
});
}
export default rangePlugin;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VrYVJhbmdlUGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGt1c2hraS9uZy1zdWthLyIsInNvdXJjZXMiOlsibGliL2RhdGVwaWNrZXIvc3VrYVJhbmdlUGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUtBLDRCQUdDOzs7SUFGQyx1QkFBa0M7O0lBQ2xDLDBCQUFrQjs7Ozs7O0FBY3BCLFNBQVMsV0FBVyxDQUFDLE1BQW1CO0lBQW5CLHVCQUFBLEVBQUEsV0FBbUI7SUFDdEM7Ozs7SUFBTyxVQUFTLEVBQUU7O1lBQ1osVUFBVSxHQUFHLEVBQUU7O1lBQ2YsV0FBNkI7O1lBQzdCLG1CQUE0Qjs7WUFDNUIsVUFBa0I7O1lBRWhCLGlCQUFpQjs7O1FBQUc7WUFDeEIsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO2dCQUNoQixXQUFXO29CQUNULE1BQU0sQ0FBQyxLQUFLLFlBQVksT0FBTzt3QkFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLO3dCQUNkLENBQUMsQ0FBQyxDQUFDLG1CQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBb0IsQ0FBQyxDQUFDO2FBQ3pFO2lCQUFNO2dCQUNMLFdBQVcsR0FBRyxtQkFBQSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFvQixDQUFDO2dCQUN4RCxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxXQUFXLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzthQUNwQztZQUVELElBQUksV0FBVyxDQUFDLEtBQUssRUFBRTs7b0JBQ2YsVUFBVSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFFbEQsSUFBSSxVQUFVLEVBQUU7b0JBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQUU7YUFDdkQ7WUFFRCxXQUFXLENB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VUFBc0IsRUFBdEIsMkNBQXNCLENBRTNDO1lBQ0osQ0FBQztTQUNGO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxFQUFDO0FBQ0osQ0FBQztBQUVELGVBQWUsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IHZhcmlhYmxlLW5hbWVcblxuaW1wb3J0IHsgUGx1Z2luLCBPcHRpb25zIH0gZnJvbSAnZmxhdHBpY2tyL2Rpc3QvdHlwZXMvb3B0aW9ucyc7XG5pbXBvcnQgeyBJbnN0YW5jZSB9IGZyb20gJ2ZsYXRwaWNrci9kaXN0L3R5cGVzL2luc3RhbmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xuICBpbnB1dD86IHN0cmluZyB8IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIHBvc2l0aW9uPzogJ2xlZnQnO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIHJhbmdlUGx1Z2luOiAoY29uZmlnPzogQ29uZmlnKSA9PiB2b2lkO1xuICB9XG5cbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50IHtcbiAgICBmbGF0cGlja3I6IChjb25maWc/OiBPcHRpb25zKSA9PiBJbnN0YW5jZTtcbiAgICBfZmxhdHBpY2tyPzogSW5zdGFuY2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmFuZ2VQbHVnaW4oY29uZmlnOiBDb25maWcgPSB7fSk6IFBsdWdpbiB7XG4gIHJldHVybiBmdW5jdGlvbihmcCkge1xuICAgIGxldCBkYXRlRm9ybWF0ID0gJyc7XG4gICAgbGV0IHNlY29uZElucHV0OiBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGxldCBfc2Vjb25kSW5wdXRGb2N1c2VkOiBib29sZWFuO1xuICAgIGxldCBfcHJldkRhdGVzOiBEYXRlW107XG5cbiAgICBjb25zdCBjcmVhdGVTZWNvbmRJbnB1dCA9ICgpID0+IHtcbiAgICAgIGlmIChjb25maWcuaW5wdXQpIHtcbiAgICAgICAgc2Vjb25kSW5wdXQgPVxuICAgICAgICAgIGNvbmZpZy5pbnB1dCBpbnN0YW5jZW9mIEVsZW1lbnRcbiAgICAgICAgICAgID8gY29uZmlnLmlucHV0XG4gICAgICAgICAgICA6ICh3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihjb25maWcuaW5wdXQpIGFzIEhUTUxJbnB1dEVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2Vjb25kSW5wdXQgPSBmcC5faW5wdXQuY2xvbmVOb2RlKCkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgc2Vjb25kSW5wdXQucmVtb3ZlQXR0cmlidXRlKCdpZCcpO1xuICAgICAgICBzZWNvbmRJbnB1dC5fZmxhdHBpY2tyID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2Vjb25kSW5wdXQudmFsdWUpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkRGF0ZSA9IGZwLnBhcnNlRGF0ZShzZWNvbmRJbnB1dC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKHBhcnNlZERhdGUpIHsgZnAuc2VsZWN0ZWREYXRlcy5wdXNoKHBhcnNlZERhdGUpOyB9XG4gICAgICB9XG5cbiAgICAgIHNlY29uZElucHV0LnNldEF0dHJpYnV0ZSgnZGF0YS1mcC1vbWl0JywgJycpO1xuXG4gICAgICBmcC5fYmluZChzZWNvbmRJbnB1dCwgWydmb2N1cycsICdjbGljayddLCAoKSA9PiB7XG4gICAgICAgIGlmIChmcC5zZWxlY3RlZERhdGVzWzFdKSB7XG4gICAgICAgICAgZnAubGF0ZXN0U2VsZWN0ZWREYXRlT2JqID0gZnAuc2VsZWN0ZWREYXRlc1sxXTtcbiAgICAgICAgICBmcC5fc2V0SG91cnNGcm9tRGF0ZShmcC5zZWxlY3RlZERhdGVzWzFdKTtcbiAgICAgICAgICBmcC5qdW1wVG9EYXRlKGZwLnNlbGVjdGVkRGF0ZXNbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgX3NlY29uZElucHV0Rm9jdXNlZCA9IHRydWU7XG4gICAgICAgIGZwLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICBmcC5vcGVuKFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBjb25maWcucG9zaXRpb24gPT09ICdsZWZ0JyA/IGZwLl9pbnB1dCA6IHNlY29uZElucHV0XG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgZnAuX2JpbmQoZnAuX2lucHV0LCBbJ2ZvY3VzJywgJ2NsaWNrJ10sIChlOiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZnAuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIGZwLm9wZW4oKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZnAuY29uZmlnLmFsbG93SW5wdXQpIHtcbiAgICAgICAgZnAuX2JpbmQoc2Vjb25kSW5wdXQsICdrZXlkb3duJywgKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoKGUgYXMgS2V5Ym9hcmRFdmVudCkua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICBmcC5zZXREYXRlKFxuICAgICAgICAgICAgICBbZnAuc2VsZWN0ZWREYXRlc1swXSwgc2Vjb25kSW5wdXQudmFsdWVdLFxuICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICBkYXRlRm9ybWF0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc2Vjb25kSW5wdXQuY2xpY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWNvbmZpZy5pbnB1dCkge1xuICAgICAgICBmcC5faW5wdXQucGFyZW50Tm9kZSAmJlxuICAgICAgICAgIGZwLl9pbnB1dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzZWNvbmRJbnB1dCwgZnAuX2lucHV0Lm5leHRTaWJsaW5nKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcGx1Z2luID0ge1xuICAgICAgb25QYXJzZUNvbmZpZygpIHtcbiAgICAgICAgZnAuY29uZmlnLm1vZGUgPSAncmFuZ2UnO1xuXG4gICAgICAgIGRhdGVGb3JtYXQgPSBmcC5jb25maWcuYWx0SW5wdXRcbiAgICAgICAgICA/IGZwLmNvbmZpZy5hbHRGb3JtYXRcbiAgICAgICAgICA6IGZwLmNvbmZpZy5kYXRlRm9ybWF0O1xuICAgICAgfSxcblxuICAgICAgb25SZWFkeSgpIHtcbiAgICAgICAgY3JlYXRlU2Vjb25kSW5wdXQoKTtcbiAgICAgICAgZnAuY29uZmlnLmlnbm9yZWRGb2N1c0VsZW1lbnRzLnB1c2goc2Vjb25kSW5wdXQpO1xuICAgICAgICBpZiAoZnAuY29uZmlnLmFsbG93SW5wdXQpIHtcbiAgICAgICAgICBmcC5faW5wdXQucmVtb3ZlQXR0cmlidXRlKCdyZWFkb25seScpO1xuICAgICAgICAgIHNlY29uZElucHV0LnJlbW92ZUF0dHJpYnV0ZSgncmVhZG9ubHknKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWNvbmRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3JlYWRvbmx5JywgJ3JlYWRvbmx5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBmcC5fYmluZChmcC5faW5wdXQsICdmb2N1cycsICgpID0+IHtcbiAgICAgICAgICBmcC5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSBmcC5zZWxlY3RlZERhdGVzWzBdO1xuICAgICAgICAgIGZwLl9zZXRIb3Vyc0Zyb21EYXRlKGZwLnNlbGVjdGVkRGF0ZXNbMF0pO1xuICAgICAgICAgIF9zZWNvbmRJbnB1dEZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICBmcC5qdW1wVG9EYXRlKGZwLnNlbGVjdGVkRGF0ZXNbMF0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZnAuY29uZmlnLmFsbG93SW5wdXQpIHtcbiAgICAgICAgICBmcC5fYmluZChmcC5faW5wdXQsICdrZXlkb3duJywgKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICgoZSBhcyBLZXlib2FyZEV2ZW50KS5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgZnAuc2V0RGF0ZShcbiAgICAgICAgICAgICAgICBbZnAuX2lucHV0LnZhbHVlLCBmcC5zZWxlY3RlZERhdGVzWzFdXSxcbiAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZwLnNldERhdGUoZnAuc2VsZWN0ZWREYXRlcywgZmFsc2UpO1xuICAgICAgICBwbHVnaW4ub25WYWx1ZVVwZGF0ZShmcC5zZWxlY3RlZERhdGVzKTtcbiAgICAgICAgZnAubG9hZGVkUGx1Z2lucy5wdXNoKCdyYW5nZScpO1xuICAgICAgfSxcblxuICAgICAgb25QcmVDYWxlbmRhclBvc2l0aW9uKCkge1xuICAgICAgICBpZiAoX3NlY29uZElucHV0Rm9jdXNlZCkge1xuICAgICAgICAgIGZwLl9wb3NpdGlvbkVsZW1lbnQgPSBzZWNvbmRJbnB1dDtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGZwLl9wb3NpdGlvbkVsZW1lbnQgPSBmcC5faW5wdXQ7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIG9uQ2hhbmdlKCkge1xuICAgICAgICBpZiAoIWZwLnNlbGVjdGVkRGF0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoZnAuc2VsZWN0ZWREYXRlcy5sZW5ndGgpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgICAgIHNlY29uZElucHV0LnZhbHVlID0gJyc7XG4gICAgICAgICAgICBfcHJldkRhdGVzID0gW107XG4gICAgICAgICAgfSwgMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF9zZWNvbmRJbnB1dEZvY3VzZWQpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHNlY29uZElucHV0LmZvY3VzKCk7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIG9uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKCFjb25maWcuaW5wdXQpIHtcbiAgICAgICAgICBzZWNvbmRJbnB1dC5wYXJlbnROb2RlICYmXG4gICAgICAgICAgICBzZWNvbmRJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNlY29uZElucHV0KTtcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgb25WYWx1ZVVwZGF0ZShzZWxEYXRlczogRGF0ZVtdKSB7XG4gICAgICAgIGlmICghc2Vjb25kSW5wdXQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgX3ByZXZEYXRlcyA9XG4gICAgICAgICAgIV9wcmV2RGF0ZXMgfHwgc2VsRGF0ZXMubGVuZ3RoID49IF9wcmV2RGF0ZXMubGVuZ3RoXG4gICAgICAgICAgICA/IFsuLi5zZWxEYXRlc11cbiAgICAgICAgICAgIDogX3ByZXZEYXRlcztcblxuICAgICAgICBsZXQgbmV3RGF0ZXM6IERhdGVbXTtcblxuICAgICAgICBpZiAoX3ByZXZEYXRlcy5sZW5ndGggPiBzZWxEYXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZERhdGUgPSBzZWxEYXRlc1swXTtcbiAgICAgICAgICBuZXdEYXRlcyA9IF9zZWNvbmRJbnB1dEZvY3VzZWRcbiAgICAgICAgICAgID8gW19wcmV2RGF0ZXNbMF0sIG5ld1NlbGVjdGVkRGF0ZV1cbiAgICAgICAgICAgIDogW25ld1NlbGVjdGVkRGF0ZSwgX3ByZXZEYXRlc1sxXV07XG5cbiAgICAgICAgICBpZiAobmV3RGF0ZXNbMF0uZ2V0VGltZSgpID4gbmV3RGF0ZXNbMV0uZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICBpZiAoX3NlY29uZElucHV0Rm9jdXNlZCkge1xuICAgICAgICAgICAgICBuZXdEYXRlc1swXSA9IG5ld0RhdGVzWzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3RGF0ZXNbMV0gPSBuZXdEYXRlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmcC5zZXREYXRlKG5ld0RhdGVzLCBmYWxzZSk7XG4gICAgICAgICAgX3ByZXZEYXRlcyA9IFsuLi5uZXdEYXRlc107XG4gICAgICAgIH0gZWxzZSBpZiAoc2VsRGF0ZXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgbmV3RGF0ZXMgPSBzZWxEYXRlcztcbiAgICAgICAgICBmcC5zZXREYXRlKG5ld0RhdGVzLCBmYWxzZSk7XG4gICAgICAgICAgX3ByZXZEYXRlcyA9IFsuLi5uZXdEYXRlc107XG5cbiAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gICAgICAgICAgY2hhbmdlRXZlbnQuaW5pdEV2ZW50KCdjaGFuZ2UnLCBmYWxzZSwgdHJ1ZSk7XG5cbiAgICAgICAgICBmcC5faW5wdXQuZGlzcGF0Y2hFdmVudChjaGFuZ2VFdmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBbZnAuX2lucHV0LnZhbHVlID0gJycsIHNlY29uZElucHV0LnZhbHVlID0gJyddID0gZnAuc2VsZWN0ZWREYXRlcy5tYXAoXG4gICAgICAgICAgZCA9PiBmcC5mb3JtYXREYXRlKGQsIGRhdGVGb3JtYXQpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gcGx1Z2luO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCByYW5nZVBsdWdpbjtcbiJdfQ==