{"version":3,"sources":["main.js","noUiSlider_config.js"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","minLen","_arrayLikeToArray","n","Object","toString","call","slice","name","Array","from","test","len","length","arr2","r","l","t","e","u","a","f","next","done","push","value","isArray","_defineProperty","obj","key","_toPropertyKey","defineProperty","enumerable","configurable","writable","_toPrimitive","String","toPrimitive","Number","initAll","popupTriggerInit","closePopupInit","toggleTriggerInit","fileInputInit","autoHeightInit","checkScrollbar","w1","document","documentElement","clientWidth","querySelector","classList","add","w2","remove","bodyStopScroll","scrollWidth","stopScrollStyle","concat","head","insertAdjacentHTML","body","bodyRemoveStopScroll","querySelectorAll","forEach","item","closePopup","activePopup","setTimeout","focusTarget","focus","isEsc","blur","trigger","addEventListener","preventDefault","popupTarget","getAttribute","setAttribute","removeAttribute","event","toggleHold","toggleTarget","closest","contains","toggle","fileInput","targetHolder","targetInfo","files","innerHTML","index","textarea","autosize","initChangeConfigSliders","opts","el","type","dataset","sliderType","fromInput","inputs","_vramSteps","_configurationChangingNewConf","cpu","hdd","ram","ip","vram","cpuMin","cpuMax","cpuStep","cpuValue","ramMin","ramMax","ramStep","ramValue","driveMin","driveMax","driveStep","driveValue","ipMin","ipMax","ipStep","ipValue","vramMin","vramMax","vramStep","vramValue","minVal","maxVal","rangeStep","parseInt","rangeStart","noUiSlider","create","range","min","max","padding","connect","start","step","typeToSpanId","drive","on","values","fromVal","toLocaleString","_updatePriceFunc","jm","input","handle","this","replace","setHandle","select","resetBtn","priceRange","resetVal","initVmBackupSlider","backupMin","backupMax","backupStep","backupValue","_wmBackupVS","bakS","volume","scheduledAnimationFrame","scroller","sectionTriggers","scrolledGap","lastScrollY","undefined","window","scrollY","parentNode","scrollTop","readAndUpdatePage","blockTarget","getElementById","blockTop","offsetTop","innerHeight","setCurrentSection","evt","requestAnimationFrame","SweetScroll","header","duration","easing","offset","vertical","horizontal","cancellable","updateURL","stopPropagation","before","after","$trigger","targetItem","top","substring","hash","location","needsInitialScroll","substr","to","toTop","stopscrollHold","throttleresize","winWidth","innerWidth","newWinWidth","clearTimeout","_SLIDERS","tariff","tariffType","fromText","_configuration","_recalculate"],"mappings":"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","file":"main.js","sourcesContent":["function initAll() {\r\n popupTriggerInit();\r\n closePopupInit();\r\n toggleTriggerInit();\r\n fileInputInit();\r\n autoHeightInit();\r\n}\r\n\r\n\r\n// FULL POPUP STUFF\r\nfunction checkScrollbar() {\r\n //Get real width of page scroll-bar\r\n const w1 = document.documentElement.clientWidth;\r\n document.querySelector('html').classList.add('popup_lock');\r\n const w2 = document.documentElement.clientWidth;\r\n document.querySelector('html').classList.remove('popup_lock');\r\n return w2 - w1;\r\n}\r\n\r\n\r\nfunction bodyStopScroll() {\r\n const scrollWidth = checkScrollbar();\r\n const stopScrollStyle = `\r\n <style id=\"scrollStuff\">\r\n html {overflow: hidden;}\r\n body, .js_noscrol_padding { padding-right: ${scrollWidth}px; }\r\n .js_noscrol_margin { margin-right: ${scrollWidth}px; }\r\n body { width:auto; }\r\n </style>\r\n `;\r\n if (!document.querySelector('#scrollStuff')) {\r\n document.head.insertAdjacentHTML('beforeend', stopScrollStyle);\r\n }\r\n document.body.classList.add('noscroll');\r\n}\r\nfunction bodyRemoveStopScroll() {\r\n\r\n document.head.querySelectorAll('#scrollStuff').forEach(item => {\r\n item.remove();\r\n });\r\n\r\n document.body.classList.remove('noscroll');\r\n}\r\n// ==============\r\n\r\n\r\nfunction closePopup() {\r\n const activePopup = document.querySelector('.js_popup.m-active');\r\n if (activePopup) {\r\n activePopup.classList.remove('m-active');\r\n setTimeout(() => {\r\n bodyRemoveStopScroll();\r\n\r\n const focusTarget = document.querySelector('.focusHolder');\r\n if (focusTarget) {\r\n focusTarget.focus();\r\n if (!isEsc) {\r\n focusTarget.blur();\r\n }\r\n focusTarget.classList.remove('focusHolder');\r\n }\r\n isEsc = false;\r\n }, 300);\r\n }\r\n else {\r\n isEsc = false;\r\n }\r\n}\r\n\r\n// ==============\r\n\r\nfunction popupTriggerInit() {\r\n document.querySelectorAll('.js_popup_trigger:not(.is-init)').forEach(trigger => {\r\n trigger.classList.add('is-init');\r\n trigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n const popupTarget = trigger.getAttribute('href')\r\n ? document.querySelector(trigger.getAttribute('href'))\r\n : document.querySelector(trigger.getAttribute('data-target'));\r\n\r\n if (popupTarget) {\r\n\r\n bodyStopScroll();\r\n popupTarget.classList.add('m-active');\r\n\r\n trigger.classList.add('focusHolder');\r\n\r\n setTimeout(() => {\r\n popupTarget.setAttribute('tabindex', '-1');\r\n popupTarget.focus();\r\n popupTarget.blur();\r\n popupTarget.removeAttribute('tabindex');\r\n }, 500);\r\n }\r\n });\r\n });\r\n}\r\n\r\n\r\nfunction closePopupInit() {\r\n document.querySelectorAll('.js_popup_close:not(.is-init)').forEach(trigger => {\r\n trigger.classList.add('is-init');\r\n trigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n closePopup();\r\n });\r\n });\r\n}\r\n\r\n\r\nlet isEsc = false;\r\ndocument.addEventListener('keyup', function (event) {\r\n if (event.key === \"Escape\") {\r\n isEsc = true;\r\n closePopup();\r\n }\r\n});\r\n\r\n\r\n// ==============\r\n\r\n\r\n\r\n// ACTIVE TOGGLE\r\nlet toggleHold = false;\r\nfunction toggleTriggerInit() {\r\n document.querySelectorAll('.js_toggle_trigger:not(.is-init)').forEach(trigger => {\r\n trigger.classList.add('is-init');\r\n trigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n if (!toggleHold) {\r\n toggleHold = true;\r\n let toggleTarget = '';\r\n if (trigger.getAttribute('data-target')) {\r\n toggleTarget = document.querySelector(trigger.getAttribute('data-target'))\r\n } else if (trigger.getAttribute('href')) {\r\n toggleTarget = document.querySelector(trigger.getAttribute('href'))\r\n } else {\r\n toggleTarget = trigger.closest('.js_toggle');\r\n }\r\n\r\n if (toggleTarget) {\r\n if (toggleTarget.classList.contains('js_toggle')) {\r\n toggleTarget.querySelectorAll('.js_toggle_trigger').forEach(item => {\r\n item.classList.toggle('m-active');\r\n });\r\n }\r\n else {\r\n trigger.classList.toggle('m-active');\r\n }\r\n toggleTarget.classList.toggle('m-active');\r\n }\r\n setTimeout(() => {\r\n toggleHold = false;\r\n }, 500);\r\n }\r\n });\r\n });\r\n}\r\n// ========================\r\n\r\n\r\n\r\n// FILE INPUT\r\nfunction fileInputInit() {\r\n document.querySelectorAll('.js_file_input:not(.is-init)').forEach(fileInput => {\r\n fileInput.classList.add('is-init');\r\n const targetHolder = fileInput.closest('.js_file');\r\n const targetInfo = targetHolder.querySelector('.js_file_info');\r\n\r\n fileInput.addEventListener('dragenter', function () {\r\n targetHolder.classList.add('m-dragging')\r\n });\r\n fileInput.addEventListener('dragleave', function () {\r\n targetHolder.classList.remove('m-dragging')\r\n });\r\n\r\n fileInput.addEventListener('change', (e) => {\r\n const files = fileInput.files;\r\n targetInfo.innerHTML = '';\r\n if (files.length > 0) {\r\n targetHolder.classList.add('hasfiles');\r\n for (let index = 0; index < files.length; index++) {\r\n targetInfo.insertAdjacentHTML('beforeend', `<div>${files[index].name}</div>`);\r\n }\r\n }\r\n else {\r\n targetHolder.classList.remove('hasfiles');\r\n }\r\n targetHolder.classList.remove('m-dragging');\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\n// ==============\r\n\r\n// textarea resize\r\nfunction autoHeightInit() {\r\n document.querySelectorAll('.js_textarea:not(.isinit)').forEach(textarea => {\r\n textarea.classList.add('isinit');\r\n autosize(textarea);\r\n });\r\n}\r\n// =====\r\n\r\n\r\n// ==============\r\n\r\n\r\n\r\n\r\n\r\n\r\n// let's get this party started\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\r\n initAll();\r\n\r\n\r\n\r\n\r\n\r\n // TEXT NAVIGATION ACTIVE SECTION\r\n function setCurrentSection(sectionTriggers) {\r\n sectionTriggers.forEach(trigger => {\r\n const blockTarget = document.getElementById(trigger.getAttribute('href').slice(1));\r\n if (blockTarget) {\r\n const blockTop = blockTarget.offsetTop;\r\n if (scrollY >= blockTop - window.innerHeight * 0.3) {\r\n sectionTriggers.forEach(item => {\r\n item.classList.remove('m-active');\r\n });\r\n trigger.classList.add('m-active');\r\n }\r\n else {\r\n trigger.classList.remove('m-active');\r\n }\r\n }\r\n });\r\n }\r\n // const sectionTriggers = document.querySelectorAll('.nav__link[href^=\"#\"]');\r\n const sectionTriggers = document.querySelectorAll('.nav__link[data-scroll]');\r\n // now go to onScroll() function\r\n // ======================\r\n\r\n\r\n\r\n\r\n // STUFF ON SCROLL\r\n const scrolledGap = 42;\r\n let scheduledAnimationFrame;\r\n let lastScrollY = (window.scrollY !== undefined) ? window.scrollY : (document.documentElement || document.body.parentNode || document.body).scrollTop;\r\n function readAndUpdatePage() {\r\n // console.log('read and update');\r\n lastScrollY > scrolledGap\r\n ? document.body.classList.add('m-scrolled')\r\n : document.body.classList.remove('m-scrolled');\r\n\r\n // document.body.classList.remove('scroll-hold');\r\n\r\n if (sectionTriggers) {\r\n setCurrentSection(sectionTriggers);\r\n }\r\n\r\n scheduledAnimationFrame = false;\r\n }\r\n function onScroll(evt) {\r\n // Store the scroll value for laterz.\r\n lastScrollY = window.scrollY;\r\n // Prevent multiple rAF callbacks.\r\n if (scheduledAnimationFrame) {\r\n return;\r\n }\r\n scheduledAnimationFrame = true;\r\n requestAnimationFrame(readAndUpdatePage);\r\n }\r\n readAndUpdatePage();\r\n window.addEventListener('scroll', onScroll);\r\n\r\n\r\n\r\n\r\n\r\n // SCROLL TO\r\n let scroller;\r\n if (SweetScroll != 'undefined') {\r\n scroller = new SweetScroll(\r\n {\r\n /* some options */\r\n trigger: '[data-scroll]', // Selector for trigger (must be a valid css selector)\r\n header: '[data-scroll-header]', // Selector or Element for fixed header (Selector of must be a valid css selector)\r\n // header: '#header',\r\n duration: 450, // Specifies animation duration in integer\r\n easing: 'easeInOutSine', // Specifies the pattern of easing\r\n offset: 0, // Specifies the value to offset the scroll position in pixels\r\n vertical: true, // Enable the vertical scroll\r\n horizontal: false, // Enable the horizontal scroll\r\n cancellable: true, // When fired wheel or touchstart events to stop scrolling\r\n updateURL: true, // Update the URL hash on after scroll (true | false | 'push' | 'replace')\r\n preventDefault: true, // Cancels the container element click event\r\n stopPropagation: true, // Prevents further propagation of the container element click event in the bubbling phase\r\n\r\n // Callbacks\r\n before: () => {\r\n document.querySelector('body').classList.add('scrollhold');\r\n },\r\n\r\n after: (offset, $trigger, scroller) => {\r\n document.querySelector('body').classList.remove('scrollhold')\r\n // move focus to target\r\n let targetItem;\r\n if (!$trigger && offset.top === 0) {\r\n targetItem = document.body;\r\n } else if ($trigger && $trigger.getAttribute('href')) {\r\n targetItem = document.querySelector($trigger.getAttribute('href'));\r\n } else if ($trigger && $trigger.getAttribute('data-scroll').substring(0, 1) === '#') {\r\n targetItem = document.querySelector($trigger.getAttribute('data-scroll'));\r\n }\r\n if (targetItem) {\r\n targetItem.insertAdjacentHTML('afterbegin', '<div tabindex=\"-1\" style=\"position:absolute\" data-setfocus></div>');\r\n // NB: NO CSS scroll-behavior: smooth; otherwise problems in Firefox\r\n targetItem.querySelector('[data-setfocus]').focus();\r\n targetItem.querySelector('[data-setfocus]').remove();\r\n }\r\n },\r\n },\r\n );\r\n\r\n // smooth scrool for URL with anchor\r\n const hash = window.location.hash;\r\n const needsInitialScroll = document.getElementById(hash.substr(1)) != null;\r\n\r\n if (needsInitialScroll) {\r\n window.location.hash = '';\r\n }\r\n\r\n window.addEventListener(\r\n 'load',\r\n () => {\r\n if (needsInitialScroll) {\r\n scroller.to(hash, { updateURL: 'replace' });\r\n }\r\n },\r\n false,\r\n );\r\n\r\n document.querySelectorAll('[data-scroll-top]').forEach(item => {\r\n item.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n scroller.toTop(0);\r\n });\r\n });\r\n //===============================\r\n\r\n\r\n }\r\n\r\n\r\n // ==========================\r\n\r\n\r\n let stopscrollHold = false;\r\n document.querySelectorAll('.js_stopscroll').forEach(trigger => {\r\n trigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n if (!stopscrollHold) {\r\n stopscrollHold = true;\r\n if (!document.body.classList.contains('noscroll')) {\r\n bodyStopScroll();\r\n } else {\r\n setTimeout(() => {\r\n bodyRemoveStopScroll();\r\n }, 500);\r\n }\r\n setTimeout(() => {\r\n stopscrollHold = false;\r\n }, 500);\r\n }\r\n });\r\n });\r\n\r\n\r\n // ON HORIZONTAL RESIZE\r\n // - remove bodystopscroll\r\n let winWidth = window.innerWidth;\r\n let throttleresize;\r\n window.addEventListener('resize', function () {\r\n let newWinWidth = window.innerWidth;\r\n if (newWinWidth !== winWidth) {\r\n newWinWidth = newWinWidth;\r\n clearTimeout(throttleresize)\r\n throttleresize = setTimeout(function () {\r\n\r\n if (document.head.querySelector('#scrollStuff')) {\r\n bodyRemoveStopScroll();\r\n }\r\n\r\n }, 150)\r\n }\r\n }, false)\r\n\r\n\r\n});\r\n\r\n\r\n// =================================================\r\n// =================================================\r\n// =================================================\r\n","// RANGE SLIDER\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\twindow._SLIDERS = {}\r\n\r\n\tlet priceRanges = document.querySelectorAll('.js_range_slider');\r\n\r\n\tpriceRanges.forEach(el => {\r\n\r\n\t\tlet tariff = Number(el.dataset.tariffType)\r\n\t\tlet type = el.dataset.sliderType\r\n\t\tlet fromInput = el.closest('.js_range').querySelector('.js_range_from'),\r\n\t\t\t// toInput = el.closest('.js_range').querySelector('.js_range_to'),\r\n\t\t\t// inputs = [fromInput, toInput],\r\n\t\t\tinputs = [fromInput],\r\n\r\n\t\t\t// toText = el.closest('.js_range').querySelector('.js_range_to_text'),\r\n\t\t\tfromText = el.closest('.js_range').querySelector('.js_range_from_text');\r\n\r\n\t\t\tif (type == \"vram\" && _vramSteps) {\r\n\t\t\t\tfromInput.setAttribute(\"data-max\", _vramSteps.length - 1) \r\n\t\t\t}\r\n\t\t//get min/maxVal \r\n\t\tconst minVal = fromInput.getAttribute('data-min') ? +fromInput.getAttribute('data-min') : 0;\r\n\t\t// const maxVal = toInput.getAttribute('data-max') ? +toInput.getAttribute('data-max') : 1;\r\n\t\tconst maxVal = fromInput.getAttribute('data-max') ? +fromInput.getAttribute('data-max') : 1;\r\n\r\n\t\t// get step\r\n\t\tconst rangeStep = fromInput.getAttribute('data-step') ? parseInt(fromInput.getAttribute('data-step')) : 1;\r\n\t\t// get start\r\n\t\tconst rangeStart = fromInput.getAttribute('value') ? fromInput.getAttribute('value') : minVal;\r\n\r\n\r\n\r\n\t\tfromInput.value = minVal.toLocaleString();\r\n\t\t//toInput.value = maxVal.toLocaleString();\r\n\r\n\t\t//Init price range slider\r\n\t\t_SLIDERS[`${type}_${tariff}`] = noUiSlider.create(el, {\r\n\t\t\trange: {\r\n\t\t\t\t// 'min': minVal,\r\n\t\t\t\t'min': 0,\r\n\t\t\t\t'max': maxVal,\r\n\t\t\t},\r\n\t\t\tpadding: [minVal, 0],\r\n\t\t\tconnect: true,\r\n\t\t\t// start: [minVal, maxVal],\r\n\t\t\tstart: [rangeStart],\r\n\t\t\tstep: rangeStep,\r\n\t\t\tconnect: [true, false],\r\n\t\t\t// behaviour: 'drag',\r\n\t\t});\r\n\r\n\t\t//Update value after scroll pointer in slider\r\n\t\tel.noUiSlider.on('update', values => {\r\n\t\t\t// let [fromVal, toVal] = values;\r\n\t\t\tlet [fromVal] = values;\r\n\r\n\t\t\tfromVal = Number(fromVal).toLocaleString();\r\n\t\t\t// toVal = Number(toVal).toLocaleString();\r\n\r\n\t\t\tfromInput.value = fromVal;\r\n\t\t\t// toInput.value = toVal;\r\n\r\n\t\t\tfromText.innerHTML = fromVal;\r\n\t\t\tif (type == \"vram\" && _vramSteps) {\r\n\t\t\t\tfromText.innerHTML = _vramSteps[Number(fromVal)]\r\n\t\t\t}\r\n\t\t\t// toText.innerHTML = toVal;\r\n\r\n\t\t\tif (typeof(_configuration) != \"undefined\" && typeof(_recalculate) != \"undefined\" && _configuration[tariff]) {\r\n\t\t\t\tswitch (type) {\r\n\t\t\t\t\tcase \"cpu\":\r\n\t\t\t\t\t\t_configuration[tariff].cpu = Number(fromVal);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"drive\":\r\n\t\t\t\t\t\t_configuration[tariff].hdd = Number(fromVal);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ram\":\r\n\t\t\t\t\t\t_configuration[tariff].ram = Number(fromVal);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ip\":\r\n\t\t\t\t\t\t_configuration[tariff].ip = Number(fromVal);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"vram\":\r\n\t\t\t\t\t\t_configuration[tariff].vram = Number(fromVal);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t_recalculate(tariff);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//Change slider value after inputs change\r\n\t\tinputs.forEach(function (input, handle) {\r\n\t\t\tinput.addEventListener('change', function () {\r\n\t\t\t\tlet value = this.value;\r\n\t\t\t\tvalue = value.replace(/\\s+/g, '');\r\n\t\t\t\tvalue = parseInt(value);\r\n\r\n\t\t\t\tel.noUiSlider.setHandle(handle, value);\r\n\t\t\t});\r\n\t\t\tinput.addEventListener('focus', function () {\r\n\t\t\t\tthis.select()\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t});\r\n\r\n\t// reset sliders value\r\n\r\n\tfunction resetRangeSlider() {\r\n\t\tlet filterPrices = document.querySelectorAll('.js_range');\r\n\r\n\t\tfilterPrices.forEach(el => {\r\n\t\t\tlet priceRange = el.querySelector('.js_range_slider'),\r\n\t\t\t\tpriceRangeInputs = el.querySelectorAll('.js_range_fields input');\r\n\r\n\t\t\tpriceRangeInputs.forEach(function (input, handle) {\r\n\t\t\t\tlet resetVal = (handle) ? input.getAttribute('data-max') : input.getAttribute('data-min');\r\n\r\n\t\t\t\tpriceRange.noUiSlider.setHandle(handle, resetVal);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tlet resetBtn = document.querySelector('.js_range_reset');\r\n\tif (resetBtn) {\r\n\t\tresetBtn.addEventListener('click', (e) => {\r\n\t\t\tresetRangeSlider()\r\n\t\t})\r\n\t}\r\n\r\n});\r\n// /RANGE SLIDER\r\n\r\nfunction initChangeConfigSliders(opts) {\r\n\t\r\n\tlet priceRanges = document.querySelectorAll('.js_range_slider');\r\n\r\n\tpriceRanges.forEach(el => {\r\n\r\n\t\tlet type = el.dataset.sliderType\r\n\t\tlet fromInput = el.closest('.js_range').querySelector('.js_range_from'),\r\n\t\t\t// toInput = el.closest('.js_range').querySelector('.js_range_to'),\r\n\t\t\t// inputs = [fromInput, toInput],\r\n\t\t\tinputs = [fromInput]\r\n\t\t\tif (type == \"vram\" && _vramSteps) {\r\n\t\t\t\tfromInput.setAttribute(\"data-max\", _vramSteps.length - 1) \r\n\t\t\t}\r\n\r\n\t\tif (typeof(_configurationChangingNewConf) != \"undefined\") {\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase \"cpu\":\r\n\t\t\t\t\tfromInput.setAttribute(\"value\", _configurationChangingNewConf.cpu) \r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"drive\":\r\n\t\t\t\t\tfromInput.setAttribute(\"value\", _configurationChangingNewConf.hdd) \r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"ram\":\r\n\t\t\t\t\tfromInput.setAttribute(\"value\", _configurationChangingNewConf.ram) \r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"ip\":\r\n\t\t\t\t\tfromInput.setAttribute(\"value\", _configurationChangingNewConf.ip) \r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"vram\":\r\n\t\t\t\t\tfromInput.setAttribute(\"value\", _configurationChangingNewConf.vram) \r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (type == \"cpu\") {\r\n\t\t\tif (opts?.cpuMin) {\r\n\t\t\t\tfromInput.setAttribute(\"data-min\", opts.cpuMin) \r\n\t\t\t}\r\n\t\t\tif (opts?.cpuMax) {\r\n\t\t\t\tfromInput.setAttribute(\"data-max\", opts.cpuMax) \r\n\t\t\t}\r\n\t\t\tif (opts?.cpuStep) {\r\n\t\t\t\tfromInput.setAttribute(\"data-step\", opts.cpuStep) \r\n\t\t\t}\r\n\t\t\tif (opts?.cpuValue) {\r\n\t\t\t\tfromInput.setAttribute(\"value\", opts.cpuValue) \r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (type == \"ram\") {\r\n\t\t\tif (opts?.ramMin) {\r\n\t\t\t\tfromInput.setAttribute(\"data-min\", opts.ramMin) \r\n\t\t\t}\r\n\t\t\tif (opts?.ramMax) {\r\n\t\t\t\tfromInput.setAttribute(\"data-max\", opts.ramMax) \r\n\t\t\t}\r\n\t\t\tif (opts?.ramStep) {\r\n\t\t\t\tfromInput.setAttribute(\"data-step\", opts.ramStep) \r\n\t\t\t}\r\n\t\t\tif (opts?.ramValue) {\r\n\t\t\t\tfromInput.setAttribute(\"value\", opts.ramValue) \r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (type == \"drive\") {\r\n\t\t\tif (opts?.driveMin) {\r\n\t\t\t\tfromInput.setAttribute(\"data-min\", opts.driveMin) \r\n\t\t\t}\r\n\t\t\tif (opts?.driveMax) {\r\n\t\t\t\tfromInput.setAttribute(\"data-max\", opts.driveMax) \r\n\t\t\t}\r\n\t\t\tif (opts?.driveStep) {\r\n\t\t\t\tfromInput.setAttribute(\"data-step\", opts.driveStep) \r\n\t\t\t}\r\n\t\t\tif (opts?.driveValue) {\r\n\t\t\t\tfromInput.setAttribute(\"value\", opts.driveValue) \r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (type == \"ip\") {\r\n\t\t\tif (opts?.ipMin) {\r\n\t\t\t\tfromInput.setAttribute(\"data-min\", opts.ipMin) \r\n\t\t\t}\r\n\t\t\tif (opts?.ipMax) {\r\n\t\t\t\tfromInput.setAttribute(\"data-max\", opts.ipMax) \r\n\t\t\t}\r\n\t\t\tif (opts?.ipStep) {\r\n\t\t\t\tfromInput.setAttribute(\"data-step\", opts.ipStep) \r\n\t\t\t}\r\n\t\t\tif (opts?.ipValue) {\r\n\t\t\t\tfromInput.setAttribute(\"value\", opts.ipValue) \r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (type == \"vram\") {\r\n\t\t\tif (opts?.vramMin) {\r\n\t\t\t\tfromInput.setAttribute(\"data-min\", opts.vramMin) \r\n\t\t\t}\r\n\t\t\tif (opts?.vramMax) {\r\n\t\t\t\tfromInput.setAttribute(\"data-max\", opts.vramMax) \r\n\t\t\t}\r\n\t\t\tif (opts?.vramStep) {\r\n\t\t\t\tfromInput.setAttribute(\"data-step\", opts.vramStep) \r\n\t\t\t}\r\n\t\t\tif (opts?.vramValue) {\r\n\t\t\t\tfromInput.setAttribute(\"value\", opts.vramValue) \r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//get min/maxVal \r\n\t\tconst minVal = fromInput.getAttribute('data-min') ? +fromInput.getAttribute('data-min') : 0;\r\n\t\t// const maxVal = toInput.getAttribute('data-max') ? +toInput.getAttribute('data-max') : 1;\r\n\t\tconst maxVal = fromInput.getAttribute('data-max') ? +fromInput.getAttribute('data-max') : 1;\r\n\r\n\t\t// get step\r\n\t\tconst rangeStep = fromInput.getAttribute('data-step') ? parseInt(fromInput.getAttribute('data-step')) : 1;\r\n\t\t// get start\r\n\t\tconst rangeStart = fromInput.getAttribute('value') ? fromInput.getAttribute('value') : minVal;\r\n\r\n\t\t//Init price range slider\r\n\t\tnoUiSlider.create(el, {\r\n\t\t\trange: {\r\n\t\t\t\t// 'min': minVal,\r\n\t\t\t\t'min': 0,\r\n\t\t\t\t'max': maxVal,\r\n\t\t\t},\r\n\t\t\tpadding: [minVal, 0],\r\n\t\t\tconnect: true,\r\n\t\t\t// start: [minVal, maxVal],\r\n\t\t\tstart: [rangeStart],\r\n\t\t\tstep: rangeStep,\r\n\t\t\tconnect: [true, false],\r\n\t\t\t// behaviour: 'drag',\r\n\t\t});\r\n\r\n\t\tlet typeToSpanId = {\r\n\t\t\t\"cpu\": \"value_CPU_span\",\r\n\t\t\t\"drive\": \"value_HDD_span\",\r\n\t\t\t\"ram\": \"value_RAM_span\",\r\n\t\t\t\"ip\": \"value_IP_span\",\r\n\t\t\t\"vram\": \"value_VRAM_span\",\r\n\t\t}\r\n\r\n\t\t//Update value after scroll pointer in slider\r\n\t\tel.noUiSlider.on('update', values => {\r\n\t\t\t// let [fromVal, toVal] = values;\r\n\t\t\tlet [fromVal] = values;\r\n\r\n\t\t\tfromVal = Number(fromVal).toLocaleString();\r\n\t\t\t// toVal = Number(toVal).toLocaleString();\r\n\r\n\t\t\tfromInput.value = fromVal;\r\n\t\t\t// toInput.value = toVal;\r\n\r\n\t\t\tif (typeof(_configurationChangingNewConf) != \"undefined\" && typeof(_updatePriceFunc) != \"undefined\" && typeof(jm) != \"undefined\") {\r\n\t\t\t\tswitch (type) {\r\n\t\t\t\t\tcase \"cpu\":\r\n\t\t\t\t\t\t_configurationChangingNewConf.cpu = Number(fromVal);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"drive\":\r\n\t\t\t\t\t\t_configurationChangingNewConf.hdd = Number(fromVal);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ram\":\r\n\t\t\t\t\t\t_configurationChangingNewConf.ram = Number(fromVal);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ip\":\r\n\t\t\t\t\t\t_configurationChangingNewConf.ip = Number(fromVal);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"vram\":\r\n\t\t\t\t\t_configurationChangingNewConf.vram = Number(fromVal);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tjm.el(typeToSpanId[type]).innerHTML = fromVal;\r\n\t\t\t\tif (type == \"vram\" && _vramSteps) {\r\n\t\t\t\t\tjm.el(typeToSpanId[type]).innerHTML = _vramSteps[Number(fromVal)]\r\n\t\t\t\t}\r\n\t\t\t\t_updatePriceFunc();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//Change slider value after inputs change\r\n\t\tinputs.forEach(function (input, handle) {\r\n\t\t\tinput.addEventListener('change', function () {\r\n\t\t\t\tlet value = this.value;\r\n\t\t\t\tvalue = value.replace(/\\s+/g, '');\r\n\t\t\t\tvalue = parseInt(value);\r\n\r\n\t\t\t\tel.noUiSlider.setHandle(handle, value);\r\n\t\t\t});\r\n\t\t\tinput.addEventListener('focus', function () {\r\n\t\t\t\tthis.select()\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t});\r\n\r\n\r\n\r\n\r\n\t// reset sliders value\r\n\r\n\tfunction resetRangeSlider() {\r\n\t\tlet filterPrices = document.querySelectorAll('.js_range');\r\n\r\n\t\tfilterPrices.forEach(el => {\r\n\t\t\tlet priceRange = el.querySelector('.js_range_slider'),\r\n\t\t\t\tpriceRangeInputs = el.querySelectorAll('.js_range_fields input');\r\n\r\n\t\t\tpriceRangeInputs.forEach(function (input, handle) {\r\n\t\t\t\tlet resetVal = (handle) ? input.getAttribute('data-max') : input.getAttribute('data-min');\r\n\r\n\t\t\t\tpriceRange.noUiSlider.setHandle(handle, resetVal);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tlet resetBtn = document.querySelector('.js_range_reset');\r\n\tif (resetBtn) {\r\n\t\tresetBtn.addEventListener('click', (e) => {\r\n\t\t\tresetRangeSlider()\r\n\t\t})\r\n\t}\r\n\r\n}\r\n\r\nfunction initVmBackupSlider(opts) {\r\n\t\r\n\tlet el = document.querySelector('.js_range_slider');\r\n\r\n\tlet fromInput = el.closest('.js_range').querySelector('.js_range_from'),\r\n\t\t// toInput = el.closest('.js_range').querySelector('.js_range_to'),\r\n\t\t// inputs = [fromInput, toInput],\r\n\t\tinputs = [fromInput]\r\n\r\n\tif (opts?.backupMin) {\r\n\t\tfromInput.setAttribute(\"data-min\", opts.backupMin) \r\n\t}\r\n\tif (opts?.backupMax) {\r\n\t\tfromInput.setAttribute(\"data-max\", opts.backupMax) \r\n\t}\r\n\tif (opts?.backupStep) {\r\n\t\tfromInput.setAttribute(\"data-step\", opts.backupStep) \r\n\t}\r\n\tif (opts?.backupValue) {\r\n\t\tfromInput.setAttribute(\"value\", opts.backupValue) \r\n\t}\r\n\r\n\t//get min/maxVal \r\n\tconst minVal = fromInput.getAttribute('data-min') ? +fromInput.getAttribute('data-min') : 0;\r\n\t// const maxVal = toInput.getAttribute('data-max') ? +toInput.getAttribute('data-max') : 1;\r\n\tconst maxVal = fromInput.getAttribute('data-max') ? +fromInput.getAttribute('data-max') : 1;\r\n\r\n\t// get step\r\n\tconst rangeStep = fromInput.getAttribute('data-step') ? parseInt(fromInput.getAttribute('data-step')) : 1;\r\n\t// get start\r\n\tconst rangeStart = fromInput.getAttribute('value') ? fromInput.getAttribute('value') : minVal;\r\n\r\n\t//Init price range slider\r\n\tnoUiSlider.create(el, {\r\n\t\trange: {\r\n\t\t\t// 'min': minVal,\r\n\t\t\t'min': 0,\r\n\t\t\t'max': maxVal,\r\n\t\t},\r\n\t\tpadding: [minVal, 0],\r\n\t\tconnect: true,\r\n\t\t// start: [minVal, maxVal],\r\n\t\tstart: [rangeStart],\r\n\t\tstep: rangeStep,\r\n\t\tconnect: [true, false],\r\n\t\t// behaviour: 'drag',\r\n\t});\r\n\r\n\t//Update value after scroll pointer in slider\r\n\tel.noUiSlider.on('update', values => {\r\n\t\t// let [fromVal, toVal] = values;\r\n\t\tlet [fromVal] = values;\r\n\r\n\t\tfromVal = Number(fromVal).toLocaleString();\r\n\t\t// toVal = Number(toVal).toLocaleString();\r\n\r\n\t\tfromInput.value = fromVal;\r\n\t\t// toInput.value = toVal;\r\n\r\n\t\tif (typeof(_wmBackupVS) != \"undefined\" && typeof(_updatePriceFunc) != \"undefined\" && typeof(jm) != \"undefined\") {\r\n\t\t\t_wmBackupVS.bakS.volume = Number(fromVal.replace(/\\s/g, \"\"))\r\n\t\t\tjm.el(\"value_HDD_span\").innerHTML = fromVal;\r\n\t\t\t_updatePriceFunc();\r\n\t\t}\r\n\t});\r\n\r\n\t//Change slider value after inputs change\r\n\tinputs.forEach(function (input, handle) {\r\n\t\tinput.addEventListener('change', function () {\r\n\t\t\tlet value = this.value;\r\n\t\t\tvalue = value.replace(/\\s+/g, '');\r\n\t\t\tvalue = parseInt(value);\r\n\r\n\t\t\tel.noUiSlider.setHandle(handle, value);\r\n\t\t});\r\n\t\tinput.addEventListener('focus', function () {\r\n\t\t\tthis.select()\r\n\t\t})\r\n\t});\r\n\r\n\t// reset sliders value\r\n\r\n\tfunction resetRangeSlider() {\r\n\t\tlet filterPrices = document.querySelectorAll('.js_range');\r\n\r\n\t\tfilterPrices.forEach(el => {\r\n\t\t\tlet priceRange = el.querySelector('.js_range_slider'),\r\n\t\t\t\tpriceRangeInputs = el.querySelectorAll('.js_range_fields input');\r\n\r\n\t\t\tpriceRangeInputs.forEach(function (input, handle) {\r\n\t\t\t\tlet resetVal = (handle) ? input.getAttribute('data-max') : input.getAttribute('data-min');\r\n\r\n\t\t\t\tpriceRange.noUiSlider.setHandle(handle, resetVal);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tlet resetBtn = document.querySelector('.js_range_reset');\r\n\tif (resetBtn) {\r\n\t\tresetBtn.addEventListener('click', (e) => {\r\n\t\t\tresetRangeSlider()\r\n\t\t})\r\n\t}\r\n\r\n}"]}