Source: settings.js

/** @module settings */

// Imports
import addRipplet from './tools';
// eslint-disable-next-line import/no-cycle
import './background';
// eslint-disable-next-line import/no-cycle
import './settingsDonationAlerts';
// eslint-disable-next-line import/no-cycle
import { enableRansom, disableRansom } from './candidates';


// Variables
const showSettingsBtn = document.getElementById('settings-icon');
const settingsWindow = document.getElementById('settings');
const urlsBtns = Array.from(document.getElementsByClassName('special-url'));

const ransomCheckbox = document.querySelector('#switch1');


// Functions
/**
 * Select all text in input
 *
 * @param {Object} input - input element
 */
const selectTxt = (input) => {
  input.focus();
  input.select();
};

/**
 * Check if URL is URL and it's a picture
 *
 * @param {string} url - URL to test
 * @return {Boolean} - is valid or not
 */
const isUrlValid = (url) => {
  const isImg = /\.(jpg|jpeg|png|gif|webp|svg)$/;
  const isUrl = /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)/;
  const encodedUrl = encodeURI(url);
  return isImg.test(encodedUrl) && isUrl.test(encodedUrl);
};


// Exec
addRipplet([...urlsBtns, showSettingsBtn, ransomCheckbox]);

showSettingsBtn.onclick = () => settingsWindow.classList.toggle('closed');

ransomCheckbox.onchange = () => {
  if (ransomCheckbox.checked) enableRansom(); else disableRansom();
};


// Exports
export { selectTxt, isUrlValid };