75 lines
2.2 KiB
JavaScript
75 lines
2.2 KiB
JavaScript
const numSliders = 5;
|
|
const defaultMultiplier = 1;
|
|
|
|
function createSliders() {
|
|
const slidersContainer = document.getElementById("sliders");
|
|
for (let i = 0; i < numSliders; i++) {
|
|
const sliderContainer = document.createElement("div");
|
|
sliderContainer.className = "slider-container";
|
|
|
|
const label = document.createElement("label");
|
|
label.textContent = `${(i / (numSliders - 1) * 2).toFixed(2)} zoom units/s`;
|
|
|
|
const slider = document.createElement("input");
|
|
slider.type = "range";
|
|
slider.min = "1";
|
|
slider.max = "10";
|
|
slider.step = "0.1";
|
|
slider.value = defaultMultiplier;
|
|
slider.className = "slider";
|
|
|
|
const value = document.createElement("span");
|
|
value.className = "value";
|
|
value.textContent = `${defaultMultiplier}x`;
|
|
|
|
sliderContainer.appendChild(label);
|
|
sliderContainer.appendChild(slider);
|
|
sliderContainer.appendChild(value);
|
|
slidersContainer.appendChild(sliderContainer);
|
|
|
|
slider.addEventListener("input", () => {
|
|
value.textContent = `${parseFloat(slider.value).toFixed(1)}x`;
|
|
saveSettings();
|
|
});
|
|
}
|
|
}
|
|
|
|
function saveSettings() {
|
|
const sliders = document.querySelectorAll(".slider");
|
|
const settings = Array.from(sliders).map((slider) => parseFloat(slider.value));
|
|
chrome.storage.sync.set({ accelerationCurve: settings }, () => {
|
|
sendSettingsToActiveTab(settings);
|
|
});
|
|
}
|
|
|
|
function sendSettingsToActiveTab(settings) {
|
|
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
|
|
if (tabs[0]) {
|
|
chrome.tabs.sendMessage(
|
|
tabs[0].id,
|
|
{ action: "updateSettings", settings },
|
|
(response) => {
|
|
if (chrome.runtime.lastError) {
|
|
console.log("Could not send settings to content script.");
|
|
}
|
|
}
|
|
);
|
|
}
|
|
});
|
|
}
|
|
|
|
function loadSettings() {
|
|
chrome.storage.sync.get("accelerationCurve", (data) => {
|
|
if (data.accelerationCurve) {
|
|
const sliders = document.querySelectorAll(".slider");
|
|
data.accelerationCurve.forEach((value, index) => {
|
|
sliders[index].value = value;
|
|
sliders[index].nextElementSibling.textContent = `${value.toFixed(1)}x`;
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
createSliders();
|
|
loadSettings();
|
|
|