123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 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
- ''
|