mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-30 01:08:48 -05:00
4da68597f7
Since we are about to release it's time to finally fix our linting. This patch basically runs eslint --fix and does some further manual fixes. Also it sets up eslint to fail on every warning on order to make warnings visable in the CI process. There should no functional change be introduced. Signed-off-by: Sheogorath <sheogorath@shivering-isles.com>
121 lines
3.9 KiB
JavaScript
121 lines
3.9 KiB
JavaScript
const wrapSymbols = ['*', '_', '~', '^', '+', '=']
|
|
export function wrapTextWith (editor, cm, symbol) {
|
|
if (!cm.getSelection()) {
|
|
return CodeMirror.Pass
|
|
} else {
|
|
let ranges = cm.listSelections()
|
|
for (let i = 0; i < ranges.length; i++) {
|
|
let range = ranges[i]
|
|
if (!range.empty()) {
|
|
const from = range.from()
|
|
const to = range.to()
|
|
|
|
if (symbol !== 'Backspace') {
|
|
let selection = cm.getRange(from, to)
|
|
let anchorIndex = editor.indexFromPos(ranges[i].anchor)
|
|
let headIndex = editor.indexFromPos(ranges[i].head)
|
|
cm.replaceRange(symbol + selection + symbol, from, to, '+input')
|
|
if (anchorIndex > headIndex) {
|
|
ranges[i].anchor.ch += symbol.length
|
|
ranges[i].head.ch += symbol.length
|
|
} else {
|
|
ranges[i].head.ch += symbol.length
|
|
ranges[i].anchor.ch += symbol.length
|
|
}
|
|
cm.setSelections(ranges)
|
|
} else {
|
|
let preEndPos = {
|
|
line: to.line,
|
|
ch: to.ch + symbol.length
|
|
}
|
|
let preText = cm.getRange(to, preEndPos)
|
|
let preIndex = wrapSymbols.indexOf(preText)
|
|
let postEndPos = {
|
|
line: from.line,
|
|
ch: from.ch - symbol.length
|
|
}
|
|
let postText = cm.getRange(postEndPos, from)
|
|
let postIndex = wrapSymbols.indexOf(postText)
|
|
// check if surround symbol are list in array and matched
|
|
if (preIndex > -1 && postIndex > -1 && preIndex === postIndex) {
|
|
cm.replaceRange('', to, preEndPos, '+delete')
|
|
cm.replaceRange('', postEndPos, from, '+delete')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export function insertText (cm, text, cursorEnd = 0) {
|
|
let cursor = cm.getCursor()
|
|
cm.replaceSelection(text, cursor, cursor)
|
|
cm.focus()
|
|
cm.setCursor({ line: cursor.line, ch: cursor.ch + cursorEnd })
|
|
}
|
|
|
|
export function insertLink (cm, isImage) {
|
|
let cursor = cm.getCursor()
|
|
let ranges = cm.listSelections()
|
|
const linkEnd = '](https://)'
|
|
const symbol = (isImage) ? '![' : '['
|
|
|
|
for (let i = 0; i < ranges.length; i++) {
|
|
let range = ranges[i]
|
|
if (!range.empty()) {
|
|
const from = range.from()
|
|
const to = range.to()
|
|
let anchorIndex = editor.indexFromPos(ranges[i].anchor)
|
|
let headIndex = editor.indexFromPos(ranges[i].head)
|
|
let selection = cm.getRange(from, to)
|
|
selection = symbol + selection + linkEnd
|
|
cm.replaceRange(selection, from, to)
|
|
if (anchorIndex > headIndex) {
|
|
ranges[i].anchor.ch += symbol.length
|
|
ranges[i].head.ch += symbol.length
|
|
} else {
|
|
ranges[i].head.ch += symbol.length
|
|
ranges[i].anchor.ch += symbol.length
|
|
}
|
|
cm.setSelections(ranges)
|
|
} else {
|
|
cm.replaceRange(symbol + linkEnd, cursor, cursor)
|
|
cm.setCursor({ line: cursor.line, ch: cursor.ch + symbol.length + linkEnd.length })
|
|
}
|
|
}
|
|
cm.focus()
|
|
}
|
|
|
|
export function insertHeader (cm) {
|
|
let cursor = cm.getCursor()
|
|
let startOfLine = { line: cursor.line, ch: 0 }
|
|
let startOfLineText = cm.getRange(startOfLine, { line: cursor.line, ch: 1 })
|
|
// See if it is already a header
|
|
if (startOfLineText === '#') {
|
|
cm.replaceRange('#', startOfLine, startOfLine)
|
|
} else {
|
|
cm.replaceRange('# ', startOfLine, startOfLine)
|
|
}
|
|
cm.focus()
|
|
}
|
|
|
|
export function insertOnStartOfLines (cm, symbol) {
|
|
let cursor = cm.getCursor()
|
|
let ranges = cm.listSelections()
|
|
|
|
for (let i = 0; i < ranges.length; i++) {
|
|
let range = ranges[i]
|
|
if (!range.empty()) {
|
|
const from = range.from()
|
|
const to = range.to()
|
|
let selection = cm.getRange({ line: from.line, ch: 0 }, to)
|
|
selection = selection.replace(/\n/g, '\n' + symbol)
|
|
selection = symbol + selection
|
|
cm.replaceRange(selection, from, to)
|
|
} else {
|
|
cm.replaceRange(symbol, { line: cursor.line, ch: 0 }, { line: cursor.line, ch: 0 })
|
|
}
|
|
}
|
|
cm.setCursor({ line: cursor.line, ch: cursor.ch + symbol.length })
|
|
cm.focus()
|
|
}
|