FarisaRahmaSari_E31222327/public/plugins/emoji-picker-master/js/emoji-picker.coffee

103 lines
2.9 KiB
CoffeeScript

class @EmojiPicker
# Options:
# spriteSheetPath: Path to each category's sprite sheet. Use '!' as a placeholder for the number (see default).
# iconSize: The size of each Emoji icon in the picker.
# textareaId: The ID to select the textarea that will be converted to a WYSIWYG.
# popupElementId: The ID of the element that, when clicked, will display the popup menu.
constructor: (options = {}) ->
$.emojiarea.iconSize = options.iconSize ? 25;
$.emojiarea.assetsPath = options.assetsPath ? '';
@generateEmojiIconSets(options)
options.emojiable_selector = '[data-emojiable=true]' if !options.emojiable_selector
this.options = options;
discover: ->
isiOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
if (isiOS)
return;
# Convert every emojiable field to an emoji area
$(this.options.emojiable_selector).emojiarea($.extend({
emojiPopup: this,
norealTime: true,
}, this.options));
generateEmojiIconSets:(options) ->
icons = {}
reverseIcons = {}
i = undefined
j = undefined
hex = undefined
name = undefined
dataItem = undefined
row = undefined
column = undefined
totalColumns = undefined
j = 0
while j < Config.EmojiCategories.length
totalColumns = Config.EmojiCategorySpritesheetDimens[j][1]
i = 0
while i < Config.EmojiCategories[j].length
dataItem = Config.Emoji[Config.EmojiCategories[j][i]]
name = dataItem[1][0]
row = Math.floor(i / totalColumns)
column = i % totalColumns
icons[':' + name + ':'] = [j, row, column, ':' + name + ':'];
reverseIcons[name] = dataItem[0]
i++
j++
$.emojiarea.icons = icons;
$.emojiarea.reverseIcons = reverseIcons;
colonToUnicode:(input) ->
if !input
return ''
if !Config.rx_colons
Config.init_unified()
input.replace Config.rx_colons, (m) ->
val = Config.mapcolon[m]
if val
val
else
''
appendUnicodeAsImageToElement:(element, input) ->
if !input
return ''
if !Config.rx_codes
Config.init_unified()
split_on_unicode = input.split(Config.rx_codes)
for text in split_on_unicode
val = ''
if Config.rx_codes.test(text)
val = Config.reversemap[text]
if val
val = ':' + val + ':'
val = $.emojiarea.createIcon($.emojiarea.icons[val])
else
val = document.createTextNode(text)
element.append(val)
input.replace Config.rx_codes, (m) ->
val = Config.reversemap[m]
if val
val = ':' + val + ':'
$img = $.emojiarea.createIcon($.emojiarea.icons[val])
$img
else
''
colonToImage:(input) ->
if !input
return ''
if !Config.rx_colons
Config.init_unified()
input.replace Config.rx_colons, (m) ->
if m
$img = $.emojiarea.createIcon($.emojiarea.icons[m])
$img
else
''