mirror of
https://github.com/DarrenOfficial/dpaste.git
synced 2024-11-24 04:16:35 +11:00
101 lines
3.3 KiB
JavaScript
101 lines
3.3 KiB
JavaScript
|
/*jshint strict:false */
|
||
|
|
||
|
if (typeof console === "undefined" || typeof console.log === "undefined") {
|
||
|
console = {};
|
||
|
console.log = function () { };
|
||
|
}
|
||
|
|
||
|
// -----------------------------------------------------------------------------
|
||
|
// Add data-platform to the body tag to show platform related shortcuts
|
||
|
// -----------------------------------------------------------------------------
|
||
|
const isWindows = navigator.appVersion.indexOf("Win") !== -1;
|
||
|
document.body.dataset.platform = isWindows ? 'win' : 'mac';
|
||
|
|
||
|
// -----------------------------------------------------------------------------
|
||
|
// Autofocus the content field on the homepage
|
||
|
// -----------------------------------------------------------------------------
|
||
|
const af = document.querySelector(".autofocus textarea");
|
||
|
if (af !== null) {
|
||
|
af.focus();
|
||
|
}
|
||
|
|
||
|
// -----------------------------------------------------------------------------
|
||
|
// Cmd+Enter or Ctrl+Enter submits the form
|
||
|
// -----------------------------------------------------------------------------
|
||
|
document.body.onkeydown = function(e) {
|
||
|
const metaKey = isWindows ? e.ctrlKey : e.metaKey;
|
||
|
const form = document.querySelector(".snippet-form");
|
||
|
|
||
|
if (form && e.keyCode === 13 && metaKey) {
|
||
|
form.submit();
|
||
|
return false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
// -----------------------------------------------------------------------------
|
||
|
// Toggle Wordwrap
|
||
|
// -----------------------------------------------------------------------------
|
||
|
const wordwrapCheckbox = document.getElementById('wordwrap');
|
||
|
const snippetDiv = document.querySelector('.snippet-code');
|
||
|
|
||
|
function toggleWordwrap() {
|
||
|
if (wordwrapCheckbox.checked) {
|
||
|
snippetDiv.classList.add('wordwrap');
|
||
|
} else {
|
||
|
snippetDiv.classList.remove('wordwrap');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (wordwrapCheckbox && snippetDiv) {
|
||
|
toggleWordwrap();
|
||
|
wordwrapCheckbox.onchange = toggleWordwrap;
|
||
|
}
|
||
|
|
||
|
// -----------------------------------------------------------------------------
|
||
|
// Line Highlighting
|
||
|
// -----------------------------------------------------------------------------
|
||
|
const curLine = document.location.hash;
|
||
|
if (curLine.startsWith('#L')) {
|
||
|
const hashlist = curLine.substring(2).split(',');
|
||
|
if (hashlist.length > 0 && hashlist[0] !== '') {
|
||
|
hashlist.forEach(function(el) {
|
||
|
const line = document.getElementById(`l${el}`);
|
||
|
if (line) {
|
||
|
line.classList.add('marked');
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let lines = document.querySelectorAll('.snippet-code li');
|
||
|
lines.forEach(function(el) {
|
||
|
el.onclick = function() {
|
||
|
el.classList.toggle('marked');
|
||
|
let hash = 'L';
|
||
|
let marked = document.querySelectorAll('.snippet-code li.marked');
|
||
|
marked.forEach(function(line) {
|
||
|
if (hash !== 'L') {
|
||
|
hash += ',';
|
||
|
}
|
||
|
hash += line.getAttribute('id').substring(1);
|
||
|
});
|
||
|
window.location.hash = hash;
|
||
|
};
|
||
|
});
|
||
|
|
||
|
// -----------------------------------------------------------------------------
|
||
|
// Copy URL to Clipboard
|
||
|
// -----------------------------------------------------------------------------
|
||
|
const clipboardLink = document.getElementById('copyToClipboard');
|
||
|
const copyToClipboardField = document.getElementById('copyToClipboardField');
|
||
|
|
||
|
if (clipboardLink && copyToClipboardField) {
|
||
|
clipboardLink.onclick = function(e) {
|
||
|
e.preventDefault();
|
||
|
copyToClipboardField.select();
|
||
|
document.execCommand("Copy");
|
||
|
console.log('Copied URL to clipboard:', copyToClipboardField.value);
|
||
|
};
|
||
|
}
|