mirror of
https://github.com/wahyd4/emoji-cheat-sheet.com.git
synced 2026-08-09 05:07:04 +10:00
178 lines
4.8 KiB
JavaScript
178 lines
4.8 KiB
JavaScript
/*
|
|
* Emoji cheat sheet
|
|
*/
|
|
$(document).ready(function() {
|
|
try {
|
|
if(document.flashtest && document.flashtest.PercentLoaded()>=0){
|
|
// Flash was able to load the test swf and is working
|
|
initZeroClipboard();
|
|
} else {
|
|
initJsClipboard();
|
|
}
|
|
} catch (e) {
|
|
initJsClipboard();
|
|
}
|
|
|
|
function initZeroClipboard(){
|
|
ZeroClipboard.config({
|
|
forceHandCursor: true,
|
|
hoverClass: "hover"
|
|
});
|
|
var clipboardclient = new ZeroClipboard();
|
|
|
|
clipboardclient.on('ready', function( readyEvent ) {
|
|
$('ul').on('mouseover', 'div', function() {
|
|
try {
|
|
clipboardclient.clip(this);
|
|
} catch(e) { }
|
|
});
|
|
|
|
clipboardclient.on('copy', function(evt) {
|
|
var clipboard = evt.clipboardData;
|
|
clipboard.setData("text/plain", $(evt.target).text().trim());
|
|
});
|
|
|
|
clipboardclient.on('aftercopy', function(evt) {
|
|
var highlightedElement = evt.target;
|
|
$(highlightedElement).addClass('copied');
|
|
setTimeout(function(){
|
|
$(highlightedElement).removeClass('copied');
|
|
},800);
|
|
|
|
_gaq.push(['_trackEvent', 'Emojis', 'Copy', text]);
|
|
});
|
|
});
|
|
|
|
clipboardclient.on( 'error', function(event) {
|
|
ZeroClipboard.destroy();
|
|
initJsClipboard();
|
|
});
|
|
}
|
|
|
|
var jsClipboardSupported = true; // we can't check if this is true unless the user tries once
|
|
function initJsClipboard() {
|
|
$('ul').on('click', 'div', function() {
|
|
try {
|
|
if(jsClipboardSupported) {
|
|
var selection = getSelection();
|
|
selection.removeAllRanges();
|
|
|
|
var range = document.createRange();
|
|
range.selectNodeContents(this);
|
|
selection.addRange(range);
|
|
|
|
var highlightedElement = $(this);
|
|
if(document.execCommand('copy')==true) { // this will silently fail on IE11 when access is denied
|
|
$(highlightedElement).addClass('copied');
|
|
_gaq.push(['_trackEvent', 'Emojis', 'Copy', $(this).text().trim()]);
|
|
setTimeout(function(){
|
|
$(highlightedElement).removeClass('copied');
|
|
},800);
|
|
} else {
|
|
// copying was not successfull or denied by the user or browser preferences
|
|
// see Firefox about:config "dom.allow_cut_copy"
|
|
$(highlightedElement).addClass('clipboardError');
|
|
setTimeout(function(){
|
|
$(highlightedElement).removeClass('clipboardError');
|
|
},6000);
|
|
|
|
jsClipboardSupported = false;
|
|
}
|
|
selection.removeAllRanges();
|
|
}
|
|
} catch(e) { }
|
|
});
|
|
}
|
|
|
|
function isElementMatching(element, needle) {
|
|
var alternative = element.attr("data-alternative-name");
|
|
return ($(element).text().toLowerCase().indexOf(needle) >= 0) ||
|
|
(alternative != null && alternative.toLowerCase().indexOf(needle) >= 0);
|
|
}
|
|
|
|
function highlightElements(needle) {
|
|
if (needle.length == 0) {
|
|
highlightAll();
|
|
return;
|
|
}
|
|
needle = needle.toLowerCase();
|
|
$(".emojis li").each(function (index, el) {
|
|
if (isElementMatching($('.name', el), needle)) {
|
|
$(el).show();
|
|
} else {
|
|
$(el).hide();
|
|
}
|
|
});
|
|
}
|
|
|
|
function highlightAll() {
|
|
$(".emojis li").show();
|
|
}
|
|
|
|
$("#header .search").keyup(function(e) {
|
|
if (e.keyCode == 27) { // ESC
|
|
$(this).val('').blur();
|
|
highlightAll();
|
|
}
|
|
});
|
|
$("#header .search").on("change paste keyup", function() {
|
|
highlightElements($("#header .search").val());
|
|
});
|
|
$("#header .search").focus();
|
|
|
|
var po = document.createElement('script');
|
|
po.type = 'text/javascript';
|
|
po.async = true;
|
|
po.src = 'https://apis.google.com/js/plusone.js';
|
|
var s = document.getElementsByTagName('script')[0];
|
|
s.parentNode.insertBefore(po, s);
|
|
|
|
var curAudio;
|
|
var curAudioContainer;
|
|
|
|
function play(e) {
|
|
e.preventDefault();
|
|
|
|
if (curAudio) {
|
|
curAudio.pause();
|
|
playStopped();
|
|
}
|
|
|
|
if ($(curAudioContainer).is(this)) {
|
|
curAudioContainer = null;
|
|
} else {
|
|
curAudioContainer = this;
|
|
soundContainer = $(curAudioContainer).find("~ div").first();
|
|
soundName = $(soundContainer).data("sound");
|
|
|
|
$(curAudioContainer).html('❚❚ ');
|
|
|
|
curAudio = new Audio("https://emoji-cheat-sheet.campfirenow.com/sounds/" + soundName + ".mp3");
|
|
$(curAudio).on('ended', playStopped);
|
|
curAudio.play();
|
|
}
|
|
}
|
|
|
|
function playStopped() {
|
|
$(curAudioContainer).html('► ');
|
|
}
|
|
|
|
function canPlayMp3() {
|
|
var audio = new Audio(),
|
|
result = audio.canPlayType("audio/mpeg");
|
|
|
|
if(result != "") {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
if (canPlayMp3() == true) {
|
|
$("#campfire-sounds li").prepend('<a href="#" class="play">► </a>');
|
|
$("#campfire-sounds .play").on("click", play);
|
|
}
|
|
|
|
$("#description a").on("click", function() {
|
|
_gaq.push(["_trackEvent", "Services", "Click", $(this).text()]);
|
|
});
|
|
});
|