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(`

Edit `) -//line views/mutators.qtpl:25 +//line views/mutators.qtpl:37 qw422016.E().S(util.BeautifulName(hyphaName)) -//line views/mutators.qtpl:25 +//line views/mutators.qtpl:37 qw422016.N().S(`

`) -//line views/mutators.qtpl:26 +//line views/mutators.qtpl:38 qw422016.N().S(warning) -//line views/mutators.qtpl:26 +//line views/mutators.qtpl:38 qw422016.N().S(`

Cancel
`) -//line views/mutators.qtpl:36 +//line views/mutators.qtpl:48 qw422016.N().S(Toolbar()) -//line views/mutators.qtpl:36 +//line views/mutators.qtpl:48 qw422016.N().S(`
`) -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 } -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 func WriteEditHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string) { -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 StreamEditHTML(qw422016, rq, hyphaName, textAreaFill, warning) -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 qt422016.ReleaseWriter(qw422016) -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 } -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 func EditHTML(rq *http.Request, hyphaName, textAreaFill, warning string) string { -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 qb422016 := qt422016.AcquireByteBuffer() -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 WriteEditHTML(qb422016, rq, hyphaName, textAreaFill, warning) -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 qs422016 := string(qb422016.B) -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 qt422016.ReleaseByteBuffer(qb422016) -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 return qs422016 -//line views/mutators.qtpl:38 +//line views/mutators.qtpl:50 } -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:52 func StreamPreviewHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) { -//line views/mutators.qtpl:40 +//line views/mutators.qtpl:52 qw422016.N().S(` `) -//line views/mutators.qtpl:41 +//line views/mutators.qtpl:53 qw422016.N().S(NavHTML(rq, hyphaName, "edit")) -//line views/mutators.qtpl:41 +//line views/mutators.qtpl:53 qw422016.N().S(`

Edit `) -//line views/mutators.qtpl:44 +//line views/mutators.qtpl:56 qw422016.E().S(util.BeautifulName(hyphaName)) -//line views/mutators.qtpl:44 +//line views/mutators.qtpl:56 qw422016.N().S(` (preview)

`) -//line views/mutators.qtpl:45 +//line views/mutators.qtpl:57 qw422016.N().S(warning) -//line views/mutators.qtpl:45 +//line views/mutators.qtpl:57 qw422016.N().S(`

Cancel

Note that the hypha is not saved yet. You can preview the changes ↓

`) -//line views/mutators.qtpl:55 +//line views/mutators.qtpl:67 qw422016.N().S(renderedPage) -//line views/mutators.qtpl:55 +//line views/mutators.qtpl:67 qw422016.N().S(`
`) -//line views/mutators.qtpl:57 +//line views/mutators.qtpl:69 qw422016.N().S(Toolbar()) -//line views/mutators.qtpl:57 +//line views/mutators.qtpl:69 qw422016.N().S(`
`) -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 } -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 func WritePreviewHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) { -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 StreamPreviewHTML(qw422016, rq, hyphaName, textAreaFill, warning, renderedPage) -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 qt422016.ReleaseWriter(qw422016) -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 } -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 func PreviewHTML(rq *http.Request, hyphaName, textAreaFill, warning string, renderedPage string) string { -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 qb422016 := qt422016.AcquireByteBuffer() -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 WritePreviewHTML(qb422016, rq, hyphaName, textAreaFill, warning, renderedPage) -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 qs422016 := string(qb422016.B) -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 qt422016.ReleaseByteBuffer(qb422016) -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 return qs422016 -//line views/mutators.qtpl:59 +//line views/mutators.qtpl:71 }