diff --git a/assets/assets.qtpl.go b/assets/assets.qtpl.go index d742476..1a8bede 100644 --- a/assets/assets.qtpl.go +++ b/assets/assets.qtpl.go @@ -461,37 +461,31 @@ function insertDate() { insertTextAtCursor(date) } -function wrapBold() { - wrapSelection('**') +function selectionWrapper(cursorPosition, prefix, postfix = null, el = editTextarea) { + return function() { + const [start, end] = [el.selectionStart, el.selectionEnd] + if (postfix == null) { + postfix = prefix + } + text = getSelectedText(el) + result = prefix + text + postfix + el.setRangeText(result, start, end, 'select') + el.focus() + placeCursor(end + cursorPosition) + } } -function wrapItalic() { - wrapSelection('//') -} - -function wrapMonospace() { - wrapSelection('`) +const wrapBold = selectionWrapper(2, '**'), + wrapItalic = selectionWrapper(2, '//'), + wrapMonospace = selectionWrapper(1, '`) //line assets/assets.qtpl:14 qw422016.N().S("`") //line assets/assets.qtpl:14 - qw422016.N().S(`') -} - -function wrapHighlighted() { - wrapSelection('!!') -} - -function wrapLifted() { - wrapSelection('^') -} - -function wrapLowered() { - wrapSelection(',,') -} - -function wrapStroked() { - wrapSelection('~~') -} + qw422016.N().S(`'), + wrapHighlighted = selectionWrapper(2, '!!'), + wrapLifted = selectionWrapper(1, '^'), + wrapLowered = selectionWrapper(2, ',,'), + wrapStrikethrough = selectionWrapper(2, '~~') function insertHorizontalBar() { insertTextAtCursor('----\n') diff --git a/assets/toolbar.js b/assets/toolbar.js index 7ea07aa..fe0629f 100644 --- a/assets/toolbar.js +++ b/assets/toolbar.js @@ -39,33 +39,27 @@ function insertDate() { insertTextAtCursor(date) } -function wrapBold() { - wrapSelection('**') +function selectionWrapper(cursorPosition, prefix, postfix = null, el = editTextarea) { + return function() { + const [start, end] = [el.selectionStart, el.selectionEnd] + if (postfix == null) { + postfix = prefix + } + text = getSelectedText(el) + result = prefix + text + postfix + el.setRangeText(result, start, end, 'select') + el.focus() + placeCursor(end + cursorPosition) + } } -function wrapItalic() { - wrapSelection('//') -} - -function wrapMonospace() { - wrapSelection('`') -} - -function wrapHighlighted() { - wrapSelection('!!') -} - -function wrapLifted() { - wrapSelection('^') -} - -function wrapLowered() { - wrapSelection(',,') -} - -function wrapStroked() { - wrapSelection('~~') -} +const wrapBold = selectionWrapper(2, '**'), + wrapItalic = selectionWrapper(2, '//'), + wrapMonospace = selectionWrapper(1, '`'), + wrapHighlighted = selectionWrapper(2, '!!'), + wrapLifted = selectionWrapper(1, '^'), + wrapLowered = selectionWrapper(2, ',,'), + wrapStrikethrough = selectionWrapper(2, '~~') function insertHorizontalBar() { insertTextAtCursor('----\n') diff --git a/views/mutators.qtpl b/views/mutators.qtpl index a32bd23..3c01602 100644 --- a/views/mutators.qtpl +++ b/views/mutators.qtpl @@ -4,16 +4,28 @@ {% func Toolbar() %} {% endfunc %} diff --git a/views/mutators.qtpl.go b/views/mutators.qtpl.go index 62f6356..97e8385 100644 --- a/views/mutators.qtpl.go +++ b/views/mutators.qtpl.go @@ -29,206 +29,238 @@ func StreamToolbar(qw422016 *qt422016.Writer) { qw422016.N().S(` `) -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 } -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 func WriteToolbar(qq422016 qtio422016.Writer) { -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 StreamToolbar(qw422016) -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 qt422016.ReleaseWriter(qw422016) -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 } -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 func Toolbar() string { -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 qb422016 := qt422016.AcquireByteBuffer() -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 WriteToolbar(qb422016) -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 qs422016 := string(qb422016.B) -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 qt422016.ReleaseByteBuffer(qb422016) -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 return qs422016 -//line views/mutators.qtpl:19 +//line views/mutators.qtpl:31 } -//line views/mutators.qtpl:21 +//line views/mutators.qtpl:33 func StreamEditHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string) { -//line views/mutators.qtpl:21 +//line views/mutators.qtpl:33 qw422016.N().S(` `) -//line views/mutators.qtpl:22 +//line views/mutators.qtpl:34 qw422016.N().S(NavHTML(rq, hyphaName, "edit")) -//line views/mutators.qtpl:22 +//line views/mutators.qtpl:34 qw422016.N().S(`
Note that the hypha is not saved yet. You can preview the changes ↓