User:Stumblean/common.js: Difference between revisions
Appearance
No edit summary Tags: Mobile edit Mobile web edit Advanced mobile edit |
No edit summary Tags: Mobile edit Mobile web edit Advanced mobile edit |
||
Line 1: | Line 1: | ||
(function () { | (function () { | ||
const iconURL = "https://files.catbox.moe/wk78nl.jpg"; | const iconURL = "https://files.catbox.moe/wk78nl.jpg"; | ||
const killScript = "mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Alexis_Jazz/Kill-It-With-Fire.js&action=raw&ctype=text/javascript');"; | |||
const menu = document.createElement("div"); | const menu = document.createElement("div"); | ||
Line 55: | Line 56: | ||
const content = document.createElement("div"); | const content = document.createElement("div"); | ||
const | // Mass Undo button | ||
const undoBtn = document.createElement("button"); | |||
undoBtn.textContent = "Mass undo"; | |||
Object.assign( | undoBtn.title = "Copy mass undo script to clipboard"; | ||
Object.assign(undoBtn.style, { | |||
background: "#555", | background: "#555", | ||
color: "#fff", | color: "#fff", | ||
Line 68: | Line 70: | ||
textAlign: "left", | textAlign: "left", | ||
}); | }); | ||
undoBtn.onclick = async () => { | |||
alert(" | try { | ||
await navigator.clipboard.writeText(killScript); | |||
alert( | |||
"Go to your common.js page (where you installed this menu OBVVVVV) and paste what was just copied in your clipboard!" | |||
); | |||
} catch (err) { | |||
alert("Failed to copy to clipboard: " + err.message); | |||
} | |||
}; | }; | ||
// Open Explanation button | |||
const openBtn = document.createElement("button"); | const openBtn = document.createElement("button"); | ||
openBtn.textContent = "Open Explanation"; | openBtn.textContent = "Open Explanation"; | ||
Line 87: | Line 97: | ||
}; | }; | ||
content.appendChild( | content.appendChild(undoBtn); | ||
content.appendChild(openBtn); | content.appendChild(openBtn); | ||
menu.appendChild(content); | menu.appendChild(content); | ||
document.body.appendChild(menu); | document.body.appendChild(menu); | ||
// | // Dragging | ||
let isDragging = false, | let isDragging = false, | ||
offsetX = 0, | offsetX = 0, |
Revision as of 01:10, 27 June 2025
(function () {
const iconURL = "https://files.catbox.moe/wk78nl.jpg";
const killScript = "mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Alexis_Jazz/Kill-It-With-Fire.js&action=raw&ctype=text/javascript');";
const menu = document.createElement("div");
menu.id = "mahitoMenu";
Object.assign(menu.style, {
position: "fixed",
top: "20px",
right: "20px",
padding: "10px",
backgroundColor: "#111",
color: "#fff",
border: "2px solid #666",
zIndex: "9999",
fontFamily: "monospace",
borderRadius: "10px",
boxShadow: "0 0 10px rgba(0,0,0,0.5)",
userSelect: "none",
touchAction: "none",
});
const header = document.createElement("div");
Object.assign(header.style, {
cursor: "grab",
display: "flex",
justifyContent: "center",
alignItems: "center",
marginBottom: "8px",
gap: "6px",
});
const leftIcon = document.createElement("img");
leftIcon.src = iconURL;
leftIcon.width = 15;
leftIcon.height = 15;
leftIcon.alt = "Mahito icon";
leftIcon.style.borderRadius = "3px";
const title = document.createElement("div");
title.textContent = "Mahito Menu";
title.style.fontWeight = "bold";
const rightIcon = document.createElement("img");
rightIcon.src = iconURL;
rightIcon.width = 15;
rightIcon.height = 15;
rightIcon.alt = "Mahito icon";
rightIcon.style.borderRadius = "3px";
header.appendChild(leftIcon);
header.appendChild(title);
header.appendChild(rightIcon);
menu.appendChild(header);
const content = document.createElement("div");
// Mass Undo button
const undoBtn = document.createElement("button");
undoBtn.textContent = "Mass undo";
undoBtn.title = "Copy mass undo script to clipboard";
Object.assign(undoBtn.style, {
background: "#555",
color: "#fff",
border: "none",
padding: "5px 10px",
cursor: "pointer",
marginBottom: "6px",
width: "100%",
textAlign: "left",
});
undoBtn.onclick = async () => {
try {
await navigator.clipboard.writeText(killScript);
alert(
"Go to your common.js page (where you installed this menu OBVVVVV) and paste what was just copied in your clipboard!"
);
} catch (err) {
alert("Failed to copy to clipboard: " + err.message);
}
};
// Open Explanation button
const openBtn = document.createElement("button");
openBtn.textContent = "Open Explanation";
Object.assign(openBtn.style, {
background: "#444",
color: "#fff",
border: "none",
padding: "5px 10px",
cursor: "pointer",
width: "100%",
textAlign: "left",
});
openBtn.onclick = () => {
console.log("Open Explanation clicked");
};
content.appendChild(undoBtn);
content.appendChild(openBtn);
menu.appendChild(content);
document.body.appendChild(menu);
// Dragging
let isDragging = false,
offsetX = 0,
offsetY = 0;
function startDrag(x, y) {
isDragging = true;
const rect = menu.getBoundingClientRect();
offsetX = x - rect.left;
offsetY = y - rect.top;
menu.style.right = "auto";
}
function doDrag(x, y) {
if (isDragging) {
menu.style.left = x - offsetX + "px";
menu.style.top = y - offsetY + "px";
}
}
function stopDrag() {
isDragging = false;
}
header.addEventListener("mousedown", function (e) {
startDrag(e.clientX, e.clientY);
e.preventDefault();
});
document.addEventListener("mousemove", function (e) {
doDrag(e.clientX, e.clientY);
});
document.addEventListener("mouseup", stopDrag);
header.addEventListener("touchstart", function (e) {
const touch = e.touches[0];
startDrag(touch.clientX, touch.clientY);
e.preventDefault();
});
document.addEventListener("touchmove", function (e) {
if (!isDragging) return;
const touch = e.touches[0];
doDrag(touch.clientX, touch.clientY);
});
document.addEventListener("touchend", stopDrag);
})();