1
0
mirror of https://github.com/gluster/glusterdocs.git synced 2026-02-06 00:48:24 +01:00
Files
glusterdocs/js/custom-features.js
2024-03-07 13:07:38 +00:00

41 lines
1.2 KiB
JavaScript

// Add ability to copy the current URL using vim like shortcuts
// There already exists navigation related shortcuts like
// F/S -- For Searching
// P/N -- For navigating to previous/next pages
// This patch just extends those features
// Expose the internal notification API of mkdocs
// This API isn't exposed publically, IDK why
// They use it internally to show notifications when user copies a code block
// I reverse engineered it for ease of use, takes a string arg `msg`
const notifyDOM = (msg) => {
if (typeof alert$ === "undefined") {
console.error("Clipboard notification API not available");
return;
}
alert$.next(msg);
};
// Extend the keyboard shortcut features
keyboard$.subscribe((key) => {
// We want to allow the user to be able to type our modifiders in search
// Disallowing that would be hilarious
if (key.mode === "search") {
return;
}
const keyPressed = key.type.toLowerCase();
// Y is added to honor vim enthusiasts (yank)
if (keyPressed === "c" || keyPressed === "y") {
const currLocation = window.location.href;
if (currLocation) {
navigator.clipboard
.writeText(currLocation)
.then(() => notifyDOM("Address copied to clipboard"))
.catch((e) => console.error(e));
}
}
});