Skip to content

Commit 2e7f369

Browse files
authored
Merge pull request #33 from Mindroute/master
Exposed options, Custom CDN support, SVG support, Recent emojis category and setFocus
2 parents 6049383 + 1642091 commit 2e7f369

23 files changed

+828
-565
lines changed

dist/emojionearea.css

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/emojionearea.css.map

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/emojionearea.js

Lines changed: 375 additions & 259 deletions
Large diffs are not rendered by default.

dist/emojionearea.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/emojionearea.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/emojionearea.min.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

scss/_variables.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ $sprite: 'sprite.png';
1414

1515
$picker-border-radius: 5px !default;
1616
$picker-bg: #fff !default;
17-
$picker-width: 284px;
17+
$picker-width: (9 * 32px + 28px);
1818
$picker-height: 236px;
1919

2020
$filters-bg: #F5F7F9 !default;

src/block/loadEmojione.js

Lines changed: 0 additions & 62 deletions
This file was deleted.

src/emojionearea.js

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
define([
2-
'jquery',
3-
'prototype/var/EmojioneArea',
4-
'prototype/on',
5-
'prototype/off',
6-
'prototype/trigger',
7-
'prototype/setText',
8-
'prototype/getText',
9-
'prototype/showPicker',
10-
'prototype/hidePicker'
2+
'jquery',
3+
'prototype/var/EmojioneArea',
4+
'var/getDefaultOptions',
5+
'prototype/on',
6+
'prototype/off',
7+
'prototype/trigger',
8+
'prototype/setFocus',
9+
'prototype/setText',
10+
'prototype/getText',
11+
'prototype/showPicker',
12+
'prototype/hidePicker'
1113
],
12-
function($, EmojioneArea) {
13-
$.fn.emojioneArea = function(options) {
14-
return this.each(function() {
15-
if (!!this.emojioneArea) return this.emojioneArea;
16-
$.data(this, 'emojioneArea', this.emojioneArea = new EmojioneArea($(this), options));
17-
return this.emojioneArea;
18-
});
19-
};
14+
function($, EmojioneArea, getDefaultOptions) {
15+
$.fn.emojioneArea = function(options) {
16+
return this.each(function() {
17+
if (!!this.emojioneArea) return this.emojioneArea;
18+
$.data(this, 'emojioneArea', this.emojioneArea = new EmojioneArea($(this), options));
19+
return this.emojioneArea;
20+
});
21+
};
22+
23+
$.fn.emojioneArea.defaults = getDefaultOptions();
2024
});

src/function/getOptions.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
define([
22
'jquery',
3-
'var/default_options',
3+
'var/getDefaultOptions',
44
'function/isObject'
55
],
6-
function($, default_options, isObject) {
7-
return function(options) {
8-
if (options['filters']) {
6+
function($, getDefaultOptions, isObject) {
7+
return function(options) {
8+
var default_options = getDefaultOptions();
9+
if (options && options['filters']) {
910
var filters = default_options.filters;
1011
$.each(options['filters'], function(filter, data) {
1112
if (!isObject(data) || $.isEmptyObject(data)) {
@@ -19,5 +20,5 @@ function($, default_options, isObject) {
1920
options['filters'] = filters;
2021
}
2122
return $.extend({}, default_options, options);
22-
}
23+
};
2324
});

src/function/getRecent.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
define([], function() {
2+
return function () {
3+
return localStorage.getItem("recent_emojis") || "";
4+
}
5+
});

src/function/getTemplate.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
define([
2-
'var/emojione',
3-
'var/emojioneSupportMode'
2+
'var/emojione',
3+
'var/emojioneSupportMode'
44
],
55
function(emojione, emojioneSupportMode) {
6-
return function(template, unicode, shortname) {
7-
return template
8-
.replace('{name}', shortname || '')
9-
.replace('{img}', emojione.imagePathPNG + (emojioneSupportMode < 2 ? unicode.toUpperCase() : unicode) + '.png')
10-
.replace('{uni}', unicode)
11-
.replace('{alt}', emojione.convert(unicode));
12-
}
6+
return function(template, unicode, shortname) {
7+
var imageType = emojione.imageType, imagePath;
8+
if (imageType=='svg'){
9+
imagePath = emojione.imagePathSVG;
10+
} else {
11+
imagePath = emojione.imagePathPNG;
12+
}
13+
return template
14+
.replace('{name}', shortname || '')
15+
.replace('{img}', imagePath + (emojioneSupportMode < 2 ? unicode.toUpperCase() : unicode) + '.' + imageType)
16+
.replace('{uni}', unicode)
17+
.replace('{alt}', emojione.convert(unicode));
18+
};
1319
});

src/function/init.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ define([
1919
'function/lazyLoading',
2020
'function/selector',
2121
'function/div',
22+
'function/getRecent',
23+
'function/setRecent'
2224
//'function/calcElapsedTime', // debug only
2325
],
2426
function($, emojione, blankImg, slice, css_class, emojioneSupportMode, trigger, attach, shortnameTo,
2527
pasteHtmlAtCaret, getOptions, saveSelection, restoreSelection, htmlFromText, textFromHtml, isObject,
26-
calcButtonPosition, lazyLoading, selector, div)
28+
calcButtonPosition, lazyLoading, selector, div, getRecent, setRecent)
2729
{
2830
return function(self, source, options) {
2931
//calcElapsedTime('init', function() {
@@ -105,6 +107,11 @@ function($, emojione, blankImg, slice, css_class, emojioneSupportMode, trigger,
105107
category.hide();
106108
items = items.split('|').join('_tone' + skin + '|') + '_tone' + skin;
107109
}
110+
111+
if (filter === 'recent') {
112+
items = getRecent();
113+
}
114+
108115
items = shortnameTo(items,
109116
self.sprite ?
110117
'<i class="emojibtn" role="button" data-name="{name}"><i class="emojione-{uni}"></i></i>' :
@@ -207,7 +214,10 @@ function($, emojione, blankImg, slice, css_class, emojioneSupportMode, trigger,
207214
});
208215
})
209216

210-
.on("@picker.show", lazyLoading)
217+
.on("@picker.show", function() {
218+
updateRecent(self, app, editor);
219+
lazyLoading.call(this);
220+
})
211221

212222
.on("@tone.click", function(tone) {
213223
tones.children().removeClass("active");
@@ -277,6 +287,8 @@ function($, emojione, blankImg, slice, css_class, emojioneSupportMode, trigger,
277287
saveSelection(editor[0]);
278288
pasteHtmlAtCaret(shortnameTo(emojibtn.data("name"), self.emojiTemplate));
279289
}
290+
291+
setRecent(self, emojibtn.data("name"), app, editor);
280292
})
281293

282294
.on("@!resize @keyup @emojibtn.click", calcButtonPosition)

src/function/loadEmojione.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
define([
2+
'var/emojione',
3+
'var/uniRegexp',
4+
'var/emojioneVersion',
5+
'var/readyCallbacks',
6+
'var/emojioneSupportMode',
7+
'var/cdn',
8+
'function/emojioneReady',
9+
'function/isObject'
10+
],
11+
function(emojione, uniRegexp, emojioneVersion, readyCallbacks, emojioneSupportMode, cdn, emojioneReady, isObject) {
12+
return function(options) {
13+
14+
function detectVersion(emojione) {
15+
var version = emojione.cacheBustParam;
16+
if (!isObject(emojione['jsEscapeMap'])) return '1.5.2';
17+
if (version === "?v=1.2.4") return '2.0.0';
18+
if (version === "?v=2.0.1") return '2.1.0'; // v2.0.1 || v2.1.0
19+
if (version === "?v=2.1.1") return '2.1.1';
20+
if (version === "?v=2.1.2") return '2.1.2';
21+
if (version === "?v=2.1.3") return '2.1.3';
22+
if (version === "?v=2.1.4") return '2.1.4';
23+
return '2.1.4';
24+
}
25+
26+
function getSupportMode(version) {
27+
switch (version) {
28+
case '1.5.2': return 0;
29+
case '2.0.0': return 1;
30+
case '2.1.0':
31+
case '2.1.1': return 2;
32+
case '2.1.2': return 3;
33+
case '2.1.3':
34+
case '2.1.4':
35+
default: return 4;
36+
}
37+
}
38+
options = getOptions(options);
39+
40+
if (!cdn.isLoading) {
41+
if (!emojione || getSupportMode(detectVersion(emojione)) < 2) {
42+
cdn.isLoading = true;
43+
$.getScript(cdn.defaultBase + emojioneVersion + "/lib/js/emojione.min.js", function () {
44+
emojione = window.emojione;
45+
emojioneVersion = detectVersion(emojione);
46+
emojioneSupportMode = getSupportMode(emojioneVersion);
47+
cdn.base = cdn.defaultBase + emojioneVersion + "/assets";
48+
var sprite = cdn.base +"/sprites/emojione.sprites.css";
49+
if (document.createStyleSheet) {
50+
document.createStyleSheet(sprite);
51+
} else {
52+
$('<link/>', {rel: 'stylesheet', href: sprite}).appendTo('head');
53+
}
54+
while (readyCallbacks.length) {
55+
readyCallbacks.shift().call();
56+
}
57+
cdn.isLoading = false;
58+
});
59+
} else {
60+
emojioneVersion = detectVersion(emojione);
61+
emojioneSupportMode = getSupportMode(emojioneVersion);
62+
cdn.base = cdn.defaultBase + emojioneVersion + "/assets";
63+
}
64+
}
65+
66+
emojioneReady(function() {
67+
if (options.useInternalCDN) {
68+
emojione.imagePathPNG = cdn.base + "/png/";
69+
emojione.imagePathSVG = cdn.base + "/svg/";
70+
emojione.imagePathSVGSprites = cdn.base + "/sprites/emojione.sprites.svg";
71+
emojione.imageType = options.imageType;
72+
}
73+
74+
uniRegexp = new RegExp("<object[^>]*>.*?<\/object>|<span[^>]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(" + emojione.unicodeRegexp + ")", "gi");
75+
});
76+
};
77+
});

src/function/setRecent.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
define([
2+
'function/updateRecent',
3+
'function/getRecent'
4+
],
5+
function(updateRecent, getRecent) {
6+
return function(self, emoji, app, editor) {
7+
8+
var recent = getRecent();
9+
var emojis = recent.split("|");
10+
11+
if (emojis.indexOf(emoji) === -1) {
12+
emojis.unshift(emoji);
13+
}
14+
15+
if (emojis.length > 9) {
16+
emojis.pop();
17+
}
18+
19+
localStorage.setItem("recent_emojis", emojis.join("|"));
20+
21+
updateRecent(self, app, editor);
22+
};
23+
});

src/function/unicodeTo.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ define([
22
'var/emojione',
33
'var/uniRegexp',
44
'var/emojioneSupportMode',
5-
'function/getTemplate',
6-
'block/loadEmojione'
5+
'function/getTemplate'
76
],
87
function(emojione, uniRegexp, emojioneSupportMode, getTemplate) {
98
return function(str, template) {

0 commit comments

Comments
 (0)