UNPKG

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