blob: d8de63a2be940541f251c6564c76025c05c790ae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
class @GLFormActions
constructor: (@form, @textarea) ->
@clearEventListeners()
@addEventListeners()
clearEventListeners: ->
@form.off 'click', '.js-toolbar-button'
addEventListeners: ->
@form.on 'click', '.js-toolbar-button', @toolbarButtonClick
toolbarButtonClick: (e) =>
$btn = $(e.currentTarget)
# Get the prefix from the button
prefix = $btn.data('prefix')
@addPrefixToTextarea(prefix)
addPrefixToTextarea: (prefix) ->
caretStart = @textarea.get(0).selectionStart
caretEnd = @textarea.get(0).selectionEnd
textEnd = @textarea.val().length
beforeSelection = @textarea.val().substring 0, caretStart
afterSelection = @textarea.val().substring caretEnd, textEnd
beforeSelectionSplit = beforeSelection.split ''
beforeSelectionLength = beforeSelection.length
# Get the last character in the before selection
beforeSelectionLastChar = beforeSelectionSplit[beforeSelectionLength - 1]
if beforeSelectionLastChar? and beforeSelectionLastChar isnt ''
# Append a white space char to the prefix if the previous char isn't a space
prefix = " #{prefix}"
# Update the textarea
@textarea.val beforeSelection + prefix + afterSelection
@textarea.get(0).setSelectionRange caretStart + prefix.length, caretEnd + prefix.length
# Focus the textarea
@textarea.focus()
@textarea.trigger('keyup')
|