mirror of
https://github.com/stashapp/CommunityScripts.git
synced 2025-12-17 03:30:51 -06:00
105 lines
3.4 KiB
JavaScript
105 lines
3.4 KiB
JavaScript
(function () {
|
|
"use strict";
|
|
function AppendTitleField(text, event) {
|
|
if ((!event.altKey && !event.ctrlKey) || event.shiftKey) {
|
|
try {
|
|
var titleInput = document.getElementById("title");
|
|
if (event.shiftKey) titleInput.value = text;
|
|
else titleInput.value += text;
|
|
console.log("Appended title to title field: " + text);
|
|
} catch (err) {
|
|
console.error("Failed to append text to title field:", err);
|
|
}
|
|
}
|
|
|
|
var textArea = null;
|
|
var fileckUrl = null;
|
|
if (event.altKey) {
|
|
try {
|
|
const navElements = document.querySelectorAll("a");
|
|
for (const element of navElements) {
|
|
var ckUrl = decodeURI(element.href);
|
|
if (ckUrl.startsWith("file://")) {
|
|
fileckUrl = ckUrl;
|
|
ckUrl = ckUrl.replace("file:///", "");
|
|
ckUrl = ckUrl.replace("file://", "");
|
|
console.debug("Copping " + ckUrl + " to clipboard");
|
|
textArea = document.createElement("textarea");
|
|
textArea.value = ckUrl;
|
|
document.body.appendChild(textArea);
|
|
textArea.select();
|
|
break;
|
|
}
|
|
}
|
|
} catch (err) {
|
|
console.error("Failed to get file URL:", err);
|
|
}
|
|
} else if (event.ctrlKey) {
|
|
try {
|
|
console.debug("Copping " + text + " to clipboard");
|
|
textArea = document.createElement("textarea");
|
|
textArea.value = text;
|
|
document.body.appendChild(textArea);
|
|
textArea.select();
|
|
} catch (err) {
|
|
console.error("Failed to get title:", err);
|
|
}
|
|
}
|
|
|
|
if (textArea != null) {
|
|
try {
|
|
var successful = document.execCommand("copy");
|
|
var msg = successful ? "successful" : "unsuccessful";
|
|
console.log("Text copy " + msg + ":", textArea.value);
|
|
} catch (err) {
|
|
console.error("Failed to copy text to clipboard:", err);
|
|
}
|
|
document.body.removeChild(textArea);
|
|
try {
|
|
if (fileckUrl != null && event.ctrlKey) {
|
|
window.open(fileckUrl, "_blank");
|
|
console.log("Opening link " + fileckUrl);
|
|
}
|
|
} catch (err) {
|
|
console.error(
|
|
"Failed to open link '" + fileckUrl + "' with error:",
|
|
err
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
function wrapElement(element) {
|
|
var text = element.textContent.trim();
|
|
var anchor = document.createElement("a");
|
|
anchor.href = "#";
|
|
anchor.textContent = text;
|
|
anchor.classList.add("renamefile");
|
|
anchor.title =
|
|
"Click to append title to [Title] input field; OR ctrl-key & mouse click to copy title to clipboard; OR shift-key click to copy to [Title] input field; OR alt-key click to copy file URI to clipboard.";
|
|
anchor.addEventListener("click", function (event) {
|
|
event.preventDefault();
|
|
AppendTitleField(text, event);
|
|
});
|
|
element.innerHTML = "";
|
|
element.appendChild(anchor);
|
|
}
|
|
|
|
function handleMutations(mutationsList, observer) {
|
|
for (const mutation of mutationsList) {
|
|
for (const addedNode of mutation.addedNodes) {
|
|
if (
|
|
addedNode.nodeType === Node.ELEMENT_NODE &&
|
|
addedNode.querySelector(".scene-header div.TruncatedText")
|
|
) {
|
|
wrapElement(
|
|
addedNode.querySelector(".scene-header div.TruncatedText")
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const observer = new MutationObserver(handleMutations);
|
|
observer.observe(document.body, { childList: true, subtree: true });
|
|
})();
|