mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-27 13:47:58 +01:00
fix code formatting
This commit is contained in:
parent
71fa95e462
commit
9ac7abdf54
2 changed files with 34 additions and 31 deletions
|
@ -52,25 +52,26 @@ const markdownSyntax = {
|
||||||
noParse: {
|
noParse: {
|
||||||
action: escapeSelection,
|
action: escapeSelection,
|
||||||
options: { escapeChar: '\\' }
|
options: { escapeChar: '\\' }
|
||||||
},
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function getSelections(textarea, linesOnly = false) {
|
function getSelections(textarea, linesOnly = false) {
|
||||||
let { selectionStart, selectionEnd } = textarea,
|
let { selectionStart, selectionEnd } = textarea,
|
||||||
selection = textarea.value.substring(selectionStart, selectionEnd),
|
selection = textarea.value.substring(selectionStart, selectionEnd),
|
||||||
leadingSpace = '',
|
leadingSpace = '',
|
||||||
trailingSpace = '',
|
trailingSpace = '',
|
||||||
caret;
|
caret;
|
||||||
|
|
||||||
if (linesOnly) {
|
if (linesOnly) {
|
||||||
let startNewlineIndex = 0,
|
let startNewlineIndex = 0,
|
||||||
endNewlineIndex = textarea.value.length,
|
endNewlineIndex = textarea.value.length;
|
||||||
explorer = /\n/g;
|
const explorer = /\n/g;
|
||||||
while (explorer.exec(textarea.value)) {
|
while (explorer.exec(textarea.value)) {
|
||||||
const { lastIndex } = explorer;
|
const { lastIndex } = explorer;
|
||||||
if (lastIndex < selectionStart) {
|
if (lastIndex < selectionStart) {
|
||||||
startNewlineIndex = lastIndex + 1;
|
startNewlineIndex = lastIndex + 1;
|
||||||
} else if (lastIndex > selectionEnd) {
|
}
|
||||||
|
else if (lastIndex > selectionEnd) {
|
||||||
endNewlineIndex = lastIndex;
|
endNewlineIndex = lastIndex;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -79,7 +80,8 @@ function getSelections(textarea, linesOnly = false) {
|
||||||
selectionStart = startNewlineIndex;
|
selectionStart = startNewlineIndex;
|
||||||
selectionEnd = endNewlineIndex;
|
selectionEnd = endNewlineIndex;
|
||||||
selection = textarea.value.substring(selectionStart, selectionEnd);
|
selection = textarea.value.substring(selectionStart, selectionEnd);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// Deselect trailing space and line break
|
// Deselect trailing space and line break
|
||||||
for (caret = selection.length - 1; caret > 0; caret--) {
|
for (caret = selection.length - 1; caret > 0; caret--) {
|
||||||
if (selection[caret] !== ' ' && selection[caret] !== '\n') break;
|
if (selection[caret] !== ' ' && selection[caret] !== '\n') break;
|
||||||
|
@ -98,7 +100,7 @@ function getSelections(textarea, linesOnly = false) {
|
||||||
return {
|
return {
|
||||||
selectedText: selection,
|
selectedText: selection,
|
||||||
beforeSelection: textarea.value.substring(0, selectionStart) + leadingSpace,
|
beforeSelection: textarea.value.substring(0, selectionStart) + leadingSpace,
|
||||||
afterSelection: trailingSpace + textarea.value.substring(selectionEnd),
|
afterSelection: trailingSpace + textarea.value.substring(selectionEnd)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,8 +109,8 @@ function getSurroundingTwoLines(beforeText, afterText) {
|
||||||
// therefore you need to include two lines before and after
|
// therefore you need to include two lines before and after
|
||||||
return {
|
return {
|
||||||
twoLinesBefore: beforeText.split('\n').slice(-2).join('\n'),
|
twoLinesBefore: beforeText.split('\n').slice(-2).join('\n'),
|
||||||
twoLinesAfter: afterText.split('\n').slice(0, 2).join('\n'),
|
twoLinesAfter: afterText.split('\n').slice(0, 2).join('\n')
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function transformSelection(textarea, transformer, eachLine) {
|
function transformSelection(textarea, transformer, eachLine) {
|
||||||
|
@ -140,7 +142,7 @@ function insertLink(textarea, options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const prefix = options.image ? '![' : '[',
|
const prefix = options.image ? '![' : '[',
|
||||||
suffix = '](' + escapeHyperlink(hyperlink) + ')';
|
suffix = `](${escapeHyperlink(hyperlink)})`;
|
||||||
|
|
||||||
wrapSelection(textarea, { prefix, suffix });
|
wrapSelection(textarea, { prefix, suffix });
|
||||||
}
|
}
|
||||||
|
@ -159,9 +161,9 @@ function wrapSelection(textarea, options) {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
newText: prefix + newText + suffix,
|
newText: prefix + newText + suffix,
|
||||||
caretOffset: emptyText ? prefix.length : -suffix.length,
|
caretOffset: emptyText ? prefix.length : -suffix.length
|
||||||
};
|
};
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function wrapLines(textarea, options) {
|
function wrapLines(textarea, options) {
|
||||||
|
@ -172,17 +174,18 @@ function wrapLines(textarea, options) {
|
||||||
let newText = prefix;
|
let newText = prefix;
|
||||||
|
|
||||||
if (!emptyText) {
|
if (!emptyText) {
|
||||||
newText = text.split(/\n/g).map(line => prefix + (line.trim()) + suffix).join('\n');
|
newText = text.split(/\n/g).map(line => prefix + line.trim() + suffix).join('\n');
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
newText += suffix;
|
newText += suffix;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add blank lines before/after if surrounding line are not empty
|
// Add blank lines before/after if surrounding line are not empty
|
||||||
if (isNotBlank(twoLinesBefore)) newText = '\n' + newText;
|
if (isNotBlank(twoLinesBefore)) newText = `\n${newText}`;
|
||||||
if (isNotBlank(twoLinesAfter)) newText += '\n';
|
if (isNotBlank(twoLinesAfter)) newText += '\n';
|
||||||
|
|
||||||
return { newText, caretOffset: newText.length - suffix.length };
|
return { newText, caretOffset: newText.length - suffix.length };
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function escapeSelection(textarea, options) {
|
function escapeSelection(textarea, options) {
|
||||||
|
@ -192,13 +195,13 @@ function escapeSelection(textarea, options) {
|
||||||
|
|
||||||
if (emptyText) return;
|
if (emptyText) return;
|
||||||
|
|
||||||
let newText = text.replace(/([\[\]()*_`\\~<>^])/g, '\\$1').replace(/\|\|/g, '\\|\\|');
|
const newText = text.replace(/([[\]()*_`\\~<>^])/g, '\\$1').replace(/\|\|/g, '\\|\\|');
|
||||||
|
|
||||||
return {
|
return {
|
||||||
newText: newText,
|
newText,
|
||||||
caretOffset: newText.length,
|
caretOffset: newText.length
|
||||||
};
|
};
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function escapeHyperlink(url) {
|
function escapeHyperlink(url) {
|
||||||
|
@ -212,12 +215,12 @@ function isNotBlank(string) {
|
||||||
function clickHandler(event) {
|
function clickHandler(event) {
|
||||||
const button = event.target.closest('.communication__toolbar__button');
|
const button = event.target.closest('.communication__toolbar__button');
|
||||||
if (!button) return;
|
if (!button) return;
|
||||||
const toolbar = button.closest('.communication__toolbar'),
|
const toolbar = button.closest('.communication__toolbar'),
|
||||||
// There may be multiple toolbars present on the page,
|
// There may be multiple toolbars present on the page,
|
||||||
// in the case of image pages with description edit active
|
// in the case of image pages with description edit active
|
||||||
// we target the textarea that shares the same parent as the toolabr
|
// we target the textarea that shares the same parent as the toolabr
|
||||||
textarea = $('.js-toolbar-input', toolbar.parentNode),
|
textarea = $('.js-toolbar-input', toolbar.parentNode),
|
||||||
id = button.dataset.syntaxId;
|
id = button.dataset.syntaxId;
|
||||||
|
|
||||||
markdownSyntax[id].action(textarea, markdownSyntax[id].options);
|
markdownSyntax[id].action(textarea, markdownSyntax[id].options);
|
||||||
textarea.focus();
|
textarea.focus();
|
||||||
|
@ -226,7 +229,7 @@ function clickHandler(event) {
|
||||||
function shortcutHandler(event) {
|
function shortcutHandler(event) {
|
||||||
if (!event.ctrlKey || (window.navigator.platform === 'MacIntel' && !event.metaKey) || event.shiftKey || event.altKey) return;
|
if (!event.ctrlKey || (window.navigator.platform === 'MacIntel' && !event.metaKey) || event.shiftKey || event.altKey) return;
|
||||||
const textarea = event.target,
|
const textarea = event.target,
|
||||||
key = event.key.toLowerCase();
|
key = event.key.toLowerCase();
|
||||||
|
|
||||||
for (const id in markdownSyntax) {
|
for (const id in markdownSyntax) {
|
||||||
if (key === markdownSyntax[id].options.shortcutKey) {
|
if (key === markdownSyntax[id].options.shortcutKey) {
|
||||||
|
@ -250,7 +253,7 @@ function setupToolbar() {
|
||||||
wrapper.classList.add('block__column--half');
|
wrapper.classList.add('block__column--half');
|
||||||
});
|
});
|
||||||
$$('.js-preview-output-wrapper').forEach(wrapper => {
|
$$('.js-preview-output-wrapper').forEach(wrapper => {
|
||||||
showEl(wrapper)
|
showEl(wrapper);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { hideEl, showEl } from './utils/dom.js';
|
||||||
function handleError(response) {
|
function handleError(response) {
|
||||||
const errorMessage = '<div>Preview failed to load!</div>';
|
const errorMessage = '<div>Preview failed to load!</div>';
|
||||||
|
|
||||||
if (!response.ok){
|
if (!response.ok) {
|
||||||
return errorMessage;
|
return errorMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ function commentReply(user, url, textarea, quote) {
|
||||||
if (newval && /\n$/.test(newval)) newval += '\n';
|
if (newval && /\n$/.test(newval)) newval += '\n';
|
||||||
newval += `${text}\n`;
|
newval += `${text}\n`;
|
||||||
|
|
||||||
if (quote){
|
if (quote) {
|
||||||
newval += `[bq="${user.replace('"', '\'')}"] ${quote} [/bq]\n`;
|
newval += `[bq="${user.replace('"', '\'')}"] ${quote} [/bq]\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,12 +44,12 @@ function commentReply(user, url, textarea, quote) {
|
||||||
let previewAbortController = null;
|
let previewAbortController = null;
|
||||||
|
|
||||||
function getPreview(body, anonymous, previewLoading, previewContent) {
|
function getPreview(body, anonymous, previewLoading, previewContent) {
|
||||||
let path = '/posts/preview';
|
const path = '/posts/preview';
|
||||||
|
|
||||||
if (typeof body !== 'string') return;
|
if (typeof body !== 'string') return;
|
||||||
|
|
||||||
const trimmedBody = body.trim();
|
const trimmedBody = body.trim();
|
||||||
if (trimmedBody.length < 1){
|
if (trimmedBody.length < 1) {
|
||||||
previewContent.innerHTML = '';
|
previewContent.innerHTML = '';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ function resizeTextarea(e) {
|
||||||
function setupPreviews() {
|
function setupPreviews() {
|
||||||
let textarea = document.querySelector('.js-preview-input');
|
let textarea = document.querySelector('.js-preview-input');
|
||||||
|
|
||||||
if (!textarea){
|
if (!textarea) {
|
||||||
textarea = document.querySelector('.js-preview-description');
|
textarea = document.querySelector('.js-preview-description');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ function setupPreviews() {
|
||||||
const previewContent = document.querySelector('.communication-preview__content');
|
const previewContent = document.querySelector('.communication-preview__content');
|
||||||
const previewAnon = document.querySelector('.js-preview-anonymous') || false;
|
const previewAnon = document.querySelector('.js-preview-anonymous') || false;
|
||||||
|
|
||||||
if (!textarea || !previewContent){
|
if (!textarea || !previewContent) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ function setupPreviews() {
|
||||||
previewAnon && previewAnon.addEventListener('click', updatePreview);
|
previewAnon && previewAnon.addEventListener('click', updatePreview);
|
||||||
|
|
||||||
document.addEventListener('click', event => {
|
document.addEventListener('click', event => {
|
||||||
if (event.target && event.target.closest('.post-reply')){
|
if (event.target && event.target.closest('.post-reply')) {
|
||||||
const link = event.target.closest('.post-reply');
|
const link = event.target.closest('.post-reply');
|
||||||
commentReply(link.dataset.author, link.getAttribute('href'), textarea, link.dataset.post);
|
commentReply(link.dataset.author, link.getAttribute('href'), textarea, link.dataset.post);
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
Loading…
Reference in a new issue