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>

244 lines 24.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ // 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 = {}) { return (/** * @param {?} fp * @return {?} */ function (fp) { /** @type {?} */ let dateFormat = ''; /** @type {?} */ let secondInput; /** @type {?} */ let _secondInputFocused; /** @type {?} */ let _prevDates; /** @type {?} */ const createSecondInput = (/** * @return {?} */ () => { 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 {?} */ const parsedDate = fp.parseDate(secondInput.value); if (parsedDate) { fp.selectedDates.push(parsedDate); } } secondInput.setAttribute('data-fp-omit', ''); fp._bind(secondInput, ['focus', 'click'], (/** * @return {?} */ () => { 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 {?} */ (e) => { e.preventDefault(); fp.isOpen = false; fp.open(); })); if (fp.config.allowInput) { fp._bind(secondInput, 'keydown', (/** * @param {?} e * @return {?} */ (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 {?} */ const plugin = { /** * @return {?} */ onParseConfig() { fp.config.mode = 'range'; dateFormat = fp.config.altInput ? fp.config.altFormat : fp.config.dateFormat; }, /** * @return {?} */ onReady() { 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 {?} */ () => { 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 {?} */ (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'); }, /** * @return {?} */ onPreCalendarPosition() { if (_secondInputFocused) { fp._positionElement = secondInput; setTimeout((/** * @return {?} */ () => { fp._positionElement = fp._input; }), 0); } }, /** * @return {?} */ onChange() { if (!fp.selectedDates.length) { setTimeout((/** * @return {?} */ () => { if (fp.selectedDates.length) { return; } secondInput.value = ''; _prevDates = []; }), 10); } if (_secondInputFocused) { setTimeout((/** * @return {?} */ () => { secondInput.focus(); }), 0); } }, /** * @return {?} */ onDestroy() { if (!config.input) { secondInput.parentNode && secondInput.parentNode.removeChild(secondInput); } }, /** * @param {?} selDates * @return {?} */ onValueUpdate(selDates) { if (!secondInput) { return; } _prevDates = !_prevDates || selDates.length >= _prevDates.length ? [...selDates] : _prevDates; /** @type {?} */ let newDates; if (_prevDates.length > selDates.length) { /** @type {?} */ const 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 = [...newDates]; } else if (selDates.length === 2) { newDates = selDates; fp.setDate(newDates, false); _prevDates = [...newDates]; /** @type {?} */ const changeEvent = document.createEvent('HTMLEvents'); changeEvent.initEvent('change', false, true); fp._input.dispatchEvent(changeEvent); } [fp._input.value = '', secondInput.value = ''] = fp.selectedDates.map((/** * @param {?} d * @return {?} */ d => fp.formatDate(d, dateFormat))); }, }; return plugin; }); } export default rangePlugin; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VrYVJhbmdlUGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGt1c2hraS9uZy1zdWthLyIsInNvdXJjZXMiOlsibGliL2RhdGVwaWNrZXIvc3VrYVJhbmdlUGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBS0EsNEJBR0M7OztJQUZDLHVCQUFrQzs7SUFDbEMsMEJBQWtCOzs7Ozs7QUFjcEIsU0FBUyxXQUFXLENBQUMsU0FBaUIsRUFBRTtJQUN0Qzs7OztJQUFPLFVBQVMsRUFBRTs7WUFDWixVQUFVLEdBQUcsRUFBRTs7WUFDZixXQUE2Qjs7WUFDN0IsbUJBQTRCOztZQUM1QixVQUFrQjs7Y0FFaEIsaUJBQWlCOzs7UUFBRyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO2dCQUNoQixXQUFXO29CQUNULE1BQU0sQ0FBQyxLQUFLLFlBQVksT0FBTzt3QkFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLO3dCQUNkLENBQUMsQ0FBQyxDQUFDLG1CQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBb0IsQ0FBQyxDQUFDO2FBQ3pFO2lCQUFNO2dCQUNMLFdBQVcsR0FBRyxtQkFBQSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFvQixDQUFDO2dCQUN4RCxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxXQUFXLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzthQUNwQztZQUVELElBQUksV0FBVyxDQUFDLEtBQUssRUFBRTs7c0JBQ2YsVUFBVSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFFbEQsSUFBSSxVQUFVLEVBQUU7b0JBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQUU7YUFDdkQ7WUFFRCxXQUFXLENBQUMsWUFBWSxD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QUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDdEM7Z0JBRUQsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUc7Ozs7Z0JBQ25FLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQ2xDLENBQUM7WUFDSixDQUFDO1NBQ0Y7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLEVBQUM7QUFDSixDQUFDO0FBRUQsZUFBZSxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTogdmFyaWFibGUtbmFtZVxuXG5pbXBvcnQgeyBQbHVnaW4sIE9wdGlvbnMgfSBmcm9tICdmbGF0cGlja3IvZGlzdC90eXBlcy9vcHRpb25zJztcbmltcG9ydCB7IEluc3RhbmNlIH0gZnJvbSAnZmxhdHBpY2tyL2Rpc3QvdHlwZXMvaW5zdGFuY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZyB7XG4gIGlucHV0Pzogc3RyaW5nIHwgSFRNTElucHV0RWxlbWVudDtcbiAgcG9zaXRpb24/OiAnbGVmdCc7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgcmFuZ2VQbHVnaW46IChjb25maWc/OiBDb25maWcpID0+IHZvaWQ7XG4gIH1cblxuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnQge1xuICAgIGZsYXRwaWNrcjogKGNvbmZpZz86IE9wdGlvbnMpID0+IEluc3RhbmNlO1xuICAgIF9mbGF0cGlja3I/OiBJbnN0YW5jZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByYW5nZVBsdWdpbihjb25maWc6IENvbmZpZyA9IHt9KTogUGx1Z2luIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGZwKSB7XG4gICAgbGV0IGRhdGVGb3JtYXQgPSAnJztcbiAgICBsZXQgc2Vjb25kSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgbGV0IF9zZWNvbmRJbnB1dEZvY3VzZWQ6IGJvb2xlYW47XG4gICAgbGV0IF9wcmV2RGF0ZXM6IERhdGVbXTtcblxuICAgIGNvbnN0IGNyZWF0ZVNlY29uZElucHV0ID0gKCkgPT4ge1xuICAgICAgaWYgKGNvbmZpZy5pbnB1dCkge1xuICAgICAgICBzZWNvbmRJbnB1dCA9XG4gICAgICAgICAgY29uZmlnLmlucHV0IGluc3RhbmNlb2YgRWxlbWVudFxuICAgICAgICAgICAgPyBjb25maWcuaW5wdXRcbiAgICAgICAgICAgIDogKHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbmZpZy5pbnB1dCkgYXMgSFRNTElucHV0RWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWNvbmRJbnB1dCA9IGZwLl9pbnB1dC5jbG9uZU5vZGUoKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBzZWNvbmRJbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgIHNlY29uZElucHV0Ll9mbGF0cGlja3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWNvbmRJbnB1dC52YWx1ZSkge1xuICAgICAgICBjb25zdCBwYXJzZWREYXRlID0gZnAucGFyc2VEYXRlKHNlY29uZElucHV0LnZhbHVlKTtcblxuICAgICAgICBpZiAocGFyc2VkRGF0ZSkgeyBmcC5zZWxlY3RlZERhdGVzLnB1c2gocGFyc2VkRGF0ZSk7IH1cbiAgICAgIH1cblxuICAgICAgc2Vjb25kSW5wdXQuc2V0QXR0cmlidXRlKCdkYXRhLWZwLW9taXQnLCAnJyk7XG5cbiAgICAgIGZwLl9iaW5kKHNlY29uZElucHV0LCBbJ2ZvY3VzJywgJ2NsaWNrJ10sICgpID0+IHtcbiAgICAgICAgaWYgKGZwLnNlbGVjdGVkRGF0ZXNbMV0pIHtcbiAgICAgICAgICBmcC5sYXRlc3RTZWxlY3RlZERhdGVPYmogPSBmcC5zZWxlY3RlZERhdGVzWzFdO1xuICAgICAgICAgIGZwLl9zZXRIb3Vyc0Zyb21EYXRlKGZwLnNlbGVjdGVkRGF0ZXNbMV0pO1xuICAgICAgICAgIGZwLmp1bXBUb0RhdGUoZnAuc2VsZWN0ZWREYXRlc1sxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBfc2Vjb25kSW5wdXRGb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgZnAuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIGZwLm9wZW4oXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIGNvbmZpZy5wb3NpdGlvbiA9PT0gJ2xlZnQnID8gZnAuX2lucHV0IDogc2Vjb25kSW5wdXRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBmcC5fYmluZChmcC5faW5wdXQsIFsnZm9jdXMnLCAnY2xpY2snXSwgKGU6IEZvY3VzRXZlbnQpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmcC5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgZnAub3BlbigpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChmcC5jb25maWcuYWxsb3dJbnB1dCkge1xuICAgICAgICBmcC5fYmluZChzZWNvbmRJbnB1dCwgJ2tleWRvd24nLCAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgIGlmICgoZSBhcyBLZXlib2FyZEV2ZW50KS5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgIGZwLnNldERhdGUoXG4gICAgICAgICAgICAgIFtmcC5zZWxlY3RlZERhdGVzWzBdLCBzZWNvbmRJbnB1dC52YWx1ZV0sXG4gICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgIGRhdGVGb3JtYXRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzZWNvbmRJbnB1dC5jbGljaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghY29uZmlnLmlucHV0KSB7XG4gICAgICAgIGZwLl9pbnB1dC5wYXJlbnROb2RlICYmXG4gICAgICAgICAgZnAuX2lucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHNlY29uZElucHV0LCBmcC5faW5wdXQubmV4dFNpYmxpbmcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBwbHVnaW4gPSB7XG4gICAgICBvblBhcnNlQ29uZmlnKCkge1xuICAgICAgICBmcC5jb25maWcubW9kZSA9ICdyYW5nZSc7XG5cbiAgICAgICAgZGF0ZUZvcm1hdCA9IGZwLmNvbmZpZy5hbHRJbnB1dFxuICAgICAgICAgID8gZnAuY29uZmlnLmFsdEZvcm1hdFxuICAgICAgICAgIDogZnAuY29uZmlnLmRhdGVGb3JtYXQ7XG4gICAgICB9LFxuXG4gICAgICBvblJlYWR5KCkge1xuICAgICAgICBjcmVhdGVTZWNvbmRJbnB1dCgpO1xuICAgICAgICBmcC5jb25maWcuaWdub3JlZEZvY3VzRWxlbWVudHMucHVzaChzZWNvbmRJbnB1dCk7XG4gICAgICAgIGlmIChmcC5jb25maWcuYWxsb3dJbnB1dCkge1xuICAgICAgICAgIGZwLl9pbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ3JlYWRvbmx5Jyk7XG4gICAgICAgICAgc2Vjb25kSW5wdXQucmVtb3ZlQXR0cmlidXRlKCdyZWFkb25seScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlY29uZElucHV0LnNldEF0dHJpYnV0ZSgncmVhZG9ubHknLCAncmVhZG9ubHknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZwLl9iaW5kKGZwLl9pbnB1dCwgJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgIGZwLmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiA9IGZwLnNlbGVjdGVkRGF0ZXNbMF07XG4gICAgICAgICAgZnAuX3NldEhvdXJzRnJvbURhdGUoZnAuc2VsZWN0ZWREYXRlc1swXSk7XG4gICAgICAgICAgX3NlY29uZElucHV0Rm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICAgIGZwLmp1bXBUb0RhdGUoZnAuc2VsZWN0ZWREYXRlc1swXSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChmcC5jb25maWcuYWxsb3dJbnB1dCkge1xuICAgICAgICAgIGZwLl9iaW5kKGZwLl9pbnB1dCwgJ2tleWRvd24nLCAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKChlIGFzIEtleWJvYXJkRXZlbnQpLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICBmcC5zZXREYXRlKFxuICAgICAgICAgICAgICAgIFtmcC5faW5wdXQudmFsdWUsIGZwLnNlbGVjdGVkRGF0ZXNbMV1dLFxuICAgICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgICAgZGF0ZUZvcm1hdFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnAuc2V0RGF0ZShmcC5zZWxlY3RlZERhdGVzLCBmYWxzZSk7XG4gICAgICAgIHBsdWdpbi5vblZhbHVlVXBkYXRlKGZwLnNlbGVjdGVkRGF0ZXMpO1xuICAgICAgICBmcC5sb2FkZWRQbHVnaW5zLnB1c2goJ3JhbmdlJyk7XG4gICAgICB9LFxuXG4gICAgICBvblByZUNhbGVuZGFyUG9zaXRpb24oKSB7XG4gICAgICAgIGlmIChfc2Vjb25kSW5wdXRGb2N1c2VkKSB7XG4gICAgICAgICAgZnAuX3Bvc2l0aW9uRWxlbWVudCA9IHNlY29uZElucHV0O1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZnAuX3Bvc2l0aW9uRWxlbWVudCA9IGZwLl9pbnB1dDtcbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgb25DaGFuZ2UoKSB7XG4gICAgICAgIGlmICghZnAuc2VsZWN0ZWREYXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmIChmcC5zZWxlY3RlZERhdGVzLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICAgICAgc2Vjb25kSW5wdXQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIF9wcmV2RGF0ZXMgPSBbXTtcbiAgICAgICAgICB9LCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3NlY29uZElucHV0Rm9jdXNlZCkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2Vjb25kSW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgb25EZXN0cm95KCkge1xuICAgICAgICBpZiAoIWNvbmZpZy5pbnB1dCkge1xuICAgICAgICAgIHNlY29uZElucHV0LnBhcmVudE5vZGUgJiZcbiAgICAgICAgICAgIHNlY29uZElucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2Vjb25kSW5wdXQpO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICBvblZhbHVlVXBkYXRlKHNlbERhdGVzOiBEYXRlW10pIHtcbiAgICAgICAgaWYgKCFzZWNvbmRJbnB1dCkgeyByZXR1cm47IH1cblxuICAgICAgICBfcHJldkRhdGVzID1cbiAgICAgICAgICAhX3ByZXZEYXRlcyB8fCBzZWxEYXRlcy5sZW5ndGggPj0gX3ByZXZEYXRlcy5sZW5ndGhcbiAgICAgICAgICAgID8gWy4uLnNlbERhdGVzXVxuICAgICAgICAgICAgOiBfcHJldkRhdGVzO1xuXG4gICAgICAgIGxldCBuZXdEYXRlczogRGF0ZVtdO1xuXG4gICAgICAgIGlmIChfcHJldkRhdGVzLmxlbmd0aCA+IHNlbERhdGVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkRGF0ZSA9IHNlbERhdGVzWzBdO1xuICAgICAgICAgIG5ld0RhdGVzID0gX3NlY29uZElucHV0Rm9jdXNlZFxuICAgICAgICAgICAgPyBbX3ByZXZEYXRlc1swXSwgbmV3U2VsZWN0ZWREYXRlXVxuICAgICAgICAgICAgOiBbbmV3U2VsZWN0ZWREYXRlLCBfcHJldkRhdGVzWzFdXTtcblxuICAgICAgICAgIGlmIChuZXdEYXRlc1swXS5nZXRUaW1lKCkgPiBuZXdEYXRlc1sxXS5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgIGlmIChfc2Vjb25kSW5wdXRGb2N1c2VkKSB7XG4gICAgICAgICAgICAgIG5ld0RhdGVzWzBdID0gbmV3RGF0ZXNbMV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdEYXRlc1sxXSA9IG5ld0RhdGVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZwLnNldERhdGUobmV3RGF0ZXMsIGZhbHNlKTtcbiAgICAgICAgICBfcHJldkRhdGVzID0gWy4uLm5ld0RhdGVzXTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxEYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBuZXdEYXRlcyA9IHNlbERhdGVzO1xuICAgICAgICAgIGZwLnNldERhdGUobmV3RGF0ZXMsIGZhbHNlKTtcbiAgICAgICAgICBfcHJldkRhdGVzID0gWy4uLm5ld0RhdGVzXTtcblxuICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgICAgICAgICBjaGFuZ2VFdmVudC5pbml0RXZlbnQoJ2NoYW5nZScsIGZhbHNlLCB0cnVlKTtcblxuICAgICAgICAgIGZwLl9pbnB1dC5kaXNwYXRjaEV2ZW50KGNoYW5nZUV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIFtmcC5faW5wdXQudmFsdWUgPSAnJywgc2Vjb25kSW5wdXQudmFsdWUgPSAnJ10gPSBmcC5zZWxlY3RlZERhdGVzLm1hcChcbiAgICAgICAgICBkID0+IGZwLmZvcm1hdERhdGUoZCwgZGF0ZUZvcm1hdClcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBwbHVnaW47XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJhbmdlUGx1Z2luO1xuIl19