Added own clipboard class.
This commit is contained in:
parent
898ee67a88
commit
919b38a6d8
1 changed files with 164 additions and 0 deletions
164
app/assets/javascripts/app/lib/clipboard.js.coffee
Normal file
164
app/assets/javascripts/app/lib/clipboard.js.coffee
Normal file
|
@ -0,0 +1,164 @@
|
|||
class App.ClipBoard
|
||||
_instance = undefined
|
||||
|
||||
@bind: (el) ->
|
||||
if _instance == undefined
|
||||
_instance ?= new _Singleton
|
||||
_instance.bind(el)
|
||||
|
||||
@getSelected: ->
|
||||
if _instance == undefined
|
||||
_instance ?= new _Singleton
|
||||
_instance.getSelected()
|
||||
|
||||
@getSelectedLast: ->
|
||||
if _instance == undefined
|
||||
_instance ?= new _Singleton
|
||||
_instance.getSelectedLast()
|
||||
|
||||
@keycode: (code) ->
|
||||
if _instance == undefined
|
||||
_instance ?= new _Singleton
|
||||
_instance.keycode(code)
|
||||
|
||||
class _Singleton
|
||||
constructor: ->
|
||||
@selection = ''
|
||||
@selectionLast = ''
|
||||
|
||||
# bind to fill selected text into
|
||||
bind: (el) ->
|
||||
$(el).bind('mouseup', =>
|
||||
@selection = @_getSelected()
|
||||
if @selection
|
||||
@selectionLast = @selection
|
||||
)
|
||||
|
||||
# get cross browser selected string
|
||||
_getSelected: ->
|
||||
text = '';
|
||||
if window.getSelection
|
||||
text = window.getSelection()
|
||||
else if document.getSelection
|
||||
text = document.getSelection()
|
||||
else if document.selection
|
||||
text = document.selection.createRange().text
|
||||
if text
|
||||
text = text.toString().trim()
|
||||
text
|
||||
|
||||
# get current selection
|
||||
getSelected: ->
|
||||
@selection
|
||||
|
||||
# get latest selection
|
||||
getSelectedLast: ->
|
||||
@selectionLast
|
||||
|
||||
keycode: (code) ->
|
||||
for key, value of @keycodesTable()
|
||||
if value.toString() is code.toString()
|
||||
return key
|
||||
|
||||
keycodesTable: ->
|
||||
map = {
|
||||
'backspace' : 8,
|
||||
'tab' : 9,
|
||||
'enter' : 13,
|
||||
'shift' : 16,
|
||||
'ctrl' : 17,
|
||||
'alt' : 18,
|
||||
'pause_break' : '19',
|
||||
'caps_lock' : '20',
|
||||
'escape' : '27',
|
||||
'page_up' : '33',
|
||||
'page down' : '34',
|
||||
'end' : '35',
|
||||
'home' : '36',
|
||||
'left_arrow' : '37',
|
||||
'up_arrow' : '38',
|
||||
'right_arrow' : '39',
|
||||
'down_arrow' : '40',
|
||||
'insert' : '45',
|
||||
'delete' : '46',
|
||||
'0' : '48',
|
||||
'1' : '49',
|
||||
'2' : '50',
|
||||
'3' : '51',
|
||||
'4' : '52',
|
||||
'5' : '53',
|
||||
'6' : '54',
|
||||
'7' : '55',
|
||||
'8' : '56',
|
||||
'9' : '57',
|
||||
'a' : '65',
|
||||
'b' : '66',
|
||||
'c' : '67',
|
||||
'd' : '68',
|
||||
'e' : '69',
|
||||
'f' : '70',
|
||||
'g' : '71',
|
||||
'h' : '72',
|
||||
'i' : '73',
|
||||
'j' : '74',
|
||||
'k' : '75',
|
||||
'l' : '76',
|
||||
'm' : '77',
|
||||
'n' : '78',
|
||||
'o' : '79',
|
||||
'p' : '80',
|
||||
'q' : '81',
|
||||
'r' : '82',
|
||||
's' : '83',
|
||||
't' : '84',
|
||||
'u' : '85',
|
||||
'v' : '86',
|
||||
'w' : '87',
|
||||
'x' : '88',
|
||||
'y' : '89',
|
||||
'z' : '90',
|
||||
'left_window key' : '91',
|
||||
'right_window key' : '92',
|
||||
'select_key' : '93',
|
||||
'numpad 0' : '96',
|
||||
'numpad 1' : '97',
|
||||
'numpad 2' : '98',
|
||||
'numpad 3' : '99',
|
||||
'numpad 4' : '100',
|
||||
'numpad 5' : '101',
|
||||
'numpad 6' : '102',
|
||||
'numpad 7' : '103',
|
||||
'numpad 8' : '104',
|
||||
'numpad 9' : '105',
|
||||
'multiply' : '106',
|
||||
'add' : '107',
|
||||
'subtract' : '109',
|
||||
'decimal point' : '110',
|
||||
'divide' : '111',
|
||||
'f1' : '112',
|
||||
'f2' : '113',
|
||||
'f3' : '114',
|
||||
'f4' : '115',
|
||||
'f5' : '116',
|
||||
'f6' : '117',
|
||||
'f7' : '118',
|
||||
'f8' : '119',
|
||||
'f9' : '120',
|
||||
'f10' : '121',
|
||||
'f11' : '122',
|
||||
'f12' : '123',
|
||||
'num_lock' : '144',
|
||||
'scroll_lock' : '145',
|
||||
'semi_colon' : '186',
|
||||
'equal_sign' : '187',
|
||||
'comma' : '188',
|
||||
'dash' : '189',
|
||||
'period' : '190',
|
||||
'forward_slash' : '191',
|
||||
'grave_accent' : '192',
|
||||
'open_bracket' : '219',
|
||||
'backslash' : '220',
|
||||
'closebracket' : '221',
|
||||
'single_quote' : '222'
|
||||
}
|
||||
map
|
Loading…
Reference in a new issue