Skip to content

Instantly share code, notes, and snippets.

@cppshane
Created February 22, 2022 02:19
Show Gist options
  • Save cppshane/4315fe362298290b07f89542998b6ae8 to your computer and use it in GitHub Desktop.
Save cppshane/4315fe362298290b07f89542998b6ae8 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Vimium Standard
// @namespace https://shaneduffy.io
// @version 0.1
// @description Standard Notes changed their UI, and now it doesn't work with Vimium. This makes things work with Vimium again.
// @author Shane Duffy
// @match https://app.standardnotes.com
// @icon https://shaneduffy.io/assets/img/logo-circle-64.png
// @grant none
// ==/UserScript==
(function() {
'use strict';
const observer = new MutationObserver(mutationList => {
var applyChanges = true;
for (const mutation of mutationList) {
switch (mutation.type) {
case 'childList':
for (const node of mutation.addedNodes) {
var classString;
if (node instanceof Element) {
classString = node.getAttribute("class");
if (classString?.includes("name") || classString?.includes("tag-icon")) {
if (node.tagName == "DIV") {
node.remove();
}
}
if (classString.includes("standard-vimium")) {
applyChanges = false;
}
}
}
for (const node of mutation.removedNodes) {
if (node instanceof Element) {
classString = node.getAttribute("class");
if (classString?.includes("standard-vimium")) {
applyChanges = false;
}
}
}
break;
case 'attributes':
break;
}
}
if (applyChanges) {
var notes = document.getElementsByClassName("name");
for (const note of notes) {
if (note != undefined && note.tagName != "a") {
var newNote = document.createElement("a");
newNote.setAttribute("class", "name standard-vimium");
newNote.innerHTML = note.innerHTML;
if (note.parentNode != undefined) {
note.parentNode.replaceChild(newNote, note);
}
}
}
var tags = document.getElementsByClassName("tag-icon");
for (const tag of tags) {
if (tag != undefined && tag.tagName != "a") {
var newTag = document.createElement("a");
newTag.setAttribute("class", "tag-icon standard-vimium");
newTag.innerHTML = tag.innerHTML;
if (tag.parentNode != undefined) {
tag.parentNode.replaceChild(newTag, tag);
}
}
}
}
});
observer.observe(document.body, {
childList: true,
attributes: true,
subtree: true,
characterData: true
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment