(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 }); })();