mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-06-28 15:27:43 +00:00
Update dark theme. Add Bot badge. Add support for badge visibility checks. Enable username color fixes by default and require slightly brighter names in dark mode. Change image tooltips to not use HTML. Add option for global Twitch emoticons in My Emoticons menu.
This commit is contained in:
parent
2fa93b0a8e
commit
dc2189d5f0
11 changed files with 462 additions and 127 deletions
199
dark.css
199
dark.css
|
@ -54,10 +54,14 @@ border-color: rgba(255, 255, 255, 0.35) transparent transparent!important;;
|
|||
}
|
||||
|
||||
/* hovering buttons */
|
||||
.ffz-dark .button:hover{
|
||||
.ffz-dark .button:not(.primary):not(.ffz-donate):hover{
|
||||
color:rgb(222,222,222)!important;
|
||||
}
|
||||
|
||||
.ffz-dark .moderation-card .button:not(.glyph-only):hover {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
/* stats */
|
||||
.ffz-dark #channel .player-column .stats-and-actions .channel-stats .stat svg:not(.svg-glyph_live) path{
|
||||
fill:rgba(255,255,255,0.35)!important;
|
||||
|
@ -100,23 +104,65 @@ border-color: rgba(255, 255, 255, 0.35) transparent transparent!important;;
|
|||
color:rgb(255,255,255)!important;
|
||||
}
|
||||
|
||||
/* Right Column */
|
||||
|
||||
.ffz-dark #right_col {
|
||||
background-color: rgb(25,25,31);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
/* Popups */
|
||||
|
||||
.ffz-dark .card,
|
||||
.ffz-dark #flyout .content,
|
||||
.ffz-dark .dropmenu,
|
||||
.ffz-dark form.js-new_panel_form,
|
||||
.ffz-dark .js-new_panel_btn,
|
||||
.ffz-dark .manager .videos-grid .video .meta,
|
||||
.ffz-dark .ember-chat .chat-room-list {
|
||||
background-color: rgb(16,16,16);
|
||||
color: rgb(195,195,195); /*#acacbf;*/
|
||||
border-color: #32323e;
|
||||
}
|
||||
|
||||
.ffz-dark #flyout .point::before {
|
||||
border-right-color: rgb(16,16,16); /*rgb(25,25,31);*/
|
||||
}
|
||||
|
||||
.ffz-dark #flyout .point::after {
|
||||
border-right-color: #32323e;
|
||||
}
|
||||
|
||||
.ffz-dark .change-banner .banner-preview,
|
||||
.ffz-dark form.js-new_panel_form input,
|
||||
.ffz-dark form.js-new_panel_form textarea,
|
||||
.ffz-dark .card input,
|
||||
.ffz-dark .card textarea,
|
||||
.ffz-dark .dropmenu input,
|
||||
.ffz-dark input.text,
|
||||
.ffz-dark input.string,
|
||||
.ffz-dark textarea,
|
||||
.ffz-dark .directory_header #custom_filter input {
|
||||
background-color: rgba(255,255,255,0.05);
|
||||
border-color: rgba(255,255,255,0.1);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
/* Other stuff */
|
||||
|
||||
.ffz-dark .panel-formatting .panel {
|
||||
color: #8c8c9c;
|
||||
}
|
||||
|
||||
.ffz-dark a {
|
||||
.ffz-dark .manager .videos-grid .video:hover .meta .actions li a,
|
||||
.ffz-dark .ember-chat .chat-room-list .room:not(:hover) p.room-title,
|
||||
.ffz-dark .dropmenu_action:not(:hover) span,
|
||||
.ffz-dark a:not(.switch):not(.follow) {
|
||||
color: #a68ed2;
|
||||
}
|
||||
|
||||
.ffz-dark #flyout a,
|
||||
.ffz-dark .dropmenu a,
|
||||
.ffz-dark .ember-chat-container a,
|
||||
.ffz-dark .chat-container a {
|
||||
color: #6441a5;
|
||||
}
|
||||
|
||||
.ffz-dark .panel-formatting .panel h3 {
|
||||
color: inherit;
|
||||
}
|
||||
|
@ -150,8 +196,77 @@ border-color: rgba(255, 255, 255, 0.35) transparent transparent!important;;
|
|||
color: #fff;
|
||||
}
|
||||
|
||||
.ffz-dark .ember-chat .moderation-card img.channel_logo {
|
||||
border-color: rgb(16,16,16);
|
||||
}
|
||||
|
||||
/* Video Manager */
|
||||
|
||||
.ffz-dark .manager .videos-grid .video .meta .actions {
|
||||
border-top-color: rgba(255,255,255,0.25);
|
||||
}
|
||||
|
||||
.ffz-dark #highlighter .highlight-content .form-container li label {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
/* Subscriptions Page */
|
||||
|
||||
.ffz-dark .tickets .ticket .benefits {
|
||||
background-color: rgb(16,16,16);
|
||||
color: rgb(195,195,195); /*#acacbf;*/
|
||||
border-color: #32323e;
|
||||
}
|
||||
|
||||
|
||||
/* Directory Pages */
|
||||
|
||||
.ffz-dark .following-col .col-header .search-contain .search .search-button svg path {
|
||||
fill: rgba(255,255,255,0.25);
|
||||
}
|
||||
|
||||
.ffz-dark .following-col .col-header .search-contain .search .search-button:hover svg path {
|
||||
fill: rgba(255,255,255,0.5);
|
||||
}
|
||||
|
||||
.ffz-dark .following-col .col-header,
|
||||
.ffz-dark .following-col .header {
|
||||
border-color: #32323e;
|
||||
}
|
||||
|
||||
.ffz-dark .following-col .following-list .load-more span,
|
||||
.ffz-dark .viewall a {
|
||||
background-color: rgb(25,25,31);
|
||||
}
|
||||
|
||||
.ffz-dark .following-col .following-list .load-more:hover span {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.ffz-dark .following-col .following-list .load-more:hover span,
|
||||
.ffz-dark .viewall a:hover {
|
||||
background-color: rgb(35,35,41);
|
||||
}
|
||||
|
||||
.ffz-dark .viewall a .text span:first-child {
|
||||
color: #a68ed2;
|
||||
}
|
||||
|
||||
|
||||
/* Profile page fixes */
|
||||
|
||||
.ffz-dark .streams .stream .content .thumb .boxart,
|
||||
.ffz-dark .videos .video .content .thumb .boxart {
|
||||
border-color: rgb(16,16,16);
|
||||
}
|
||||
|
||||
.ffz-dark .ember-chat .moderation-card img.channel_logo,
|
||||
.ffz-dark .channel-link .profile-photo {
|
||||
background-color: rgb(16,16,16);
|
||||
}
|
||||
|
||||
.ffz-dark .items-grid .meta .title,
|
||||
.ffz-dark .items-grid .meta p a {
|
||||
color: #9c9c9c;
|
||||
}
|
||||
|
@ -160,10 +275,74 @@ border-color: rgba(255, 255, 255, 0.35) transparent transparent!important;;
|
|||
color: #6c6c6c;
|
||||
}
|
||||
|
||||
.ffz-dark ul.tabs li>a:hover, .ffz-dark .directory_header .nav li>a:hover, .ffz-dark ul.tabs_fake li>a:hover, .ffz-dark ul.tabs li>a.active, .ffz-dark .directory_header .nav li>a.active, .ffz-dark ul.tabs_fake li>a.active {
|
||||
.ffz-dark ul.tabs li > a,
|
||||
.ffz-dark .directory_header .nav li > a,
|
||||
.ffz-dark ul.tabs_fake li > a {
|
||||
color: #a68ed2;
|
||||
}
|
||||
|
||||
.ffz-dark ul.tabs:before,
|
||||
.ffz-dark .direcotry_header .nav:before,
|
||||
.ffz-dark ul.tabs_fake:before {
|
||||
border-color: #32323e;
|
||||
}
|
||||
|
||||
.ffz-dark ul.tabs li.selected a,
|
||||
.ffz-dark .directory_header .nav li.selected a,
|
||||
.ffz-dark ul.tabs_fake li.selected a,
|
||||
.ffz-dark ul.tabs li>a:hover,
|
||||
.ffz-dark .directory_header .nav li>a:hover,
|
||||
.ffz-dark ul.tabs_fake li>a:hover,
|
||||
.ffz-dark ul.tabs li>a.active,
|
||||
.ffz-dark .directory_header .nav li>a.active,
|
||||
.ffz-dark ul.tabs_fake li>a.active {
|
||||
color: #aaa;
|
||||
border-color: #ccc !important;
|
||||
}
|
||||
|
||||
/* Hide the chat Dark Mode control */
|
||||
.ffz-dark .toggle-darkmode { display: none; }
|
||||
|
||||
/* Chat Text Contrast */
|
||||
.ffz-dark .ember-chat-container.dark .chat-line,
|
||||
.ffz-dark .chat-container.dark .chat-line {
|
||||
color: #acacbf;
|
||||
}
|
||||
|
||||
.ffz-dark .ember-chat .chat-settings .chat-colors .chat-colors-swatch:hover,
|
||||
.ffz-dark .ember-chat .chat-settings .chat-colors .chat-colors-switch.selected {
|
||||
border-color: #777;
|
||||
box-shadow: inset 0 0 0 1px #32323e;
|
||||
}
|
||||
|
||||
/* FrankerFaceZ Menu */
|
||||
|
||||
.ffz-dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .chat-menu-content .heading,
|
||||
.ffz-dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .emoticon-grid .heading,
|
||||
.ffz-dark .ffz-ui-popup ul.menu,
|
||||
.ffz-dark .ffz-ui-popup ul.menu a {
|
||||
border-color: #32323e;
|
||||
}
|
||||
|
||||
.ffz-dark .ffz-ui-popup ul.menu {
|
||||
background-color: rgb(33,33,33);
|
||||
}
|
||||
|
||||
.ffz-dark .ffz-ui-popup ul.menu li.active {
|
||||
background-color: rgb(16,16,16);
|
||||
}
|
||||
|
||||
.ffz-dark .ffz-ui-popup ul.menu li.active a {
|
||||
border-top-color: rgb(16,16,16);
|
||||
}
|
||||
|
||||
/* New User Prompt */
|
||||
|
||||
.ffz-dark #new-user-prompt {
|
||||
background-color: rgb(25,25,31);
|
||||
color: #acacbf;
|
||||
}
|
||||
|
||||
.ffz-dark #new-user-prompt .message .title {
|
||||
color: #fff;
|
||||
}
|
175
script.js
175
script.js
|
@ -4,6 +4,20 @@ var FFZ = window.FrankerFaceZ,
|
|||
utils = require('./utils');
|
||||
|
||||
|
||||
// --------------------
|
||||
// Settings
|
||||
// --------------------
|
||||
|
||||
FFZ.settings_info.bot_badges = {
|
||||
type: "boolean",
|
||||
value: true,
|
||||
|
||||
category: "Chat",
|
||||
name: "Bot Badges",
|
||||
help: "Give special badges to known bots."
|
||||
};
|
||||
|
||||
|
||||
// --------------------
|
||||
// Initialization
|
||||
// --------------------
|
||||
|
@ -39,7 +53,8 @@ FFZ.prototype.bttv_badges = function(data) {
|
|||
var user_id = data.sender,
|
||||
user = this.users[user_id],
|
||||
badges_out = [],
|
||||
insert_at = -1;
|
||||
insert_at = -1,
|
||||
alpha = BetterTTV.settings.get('alphaTags');
|
||||
|
||||
if ( ! user || ! user.badges )
|
||||
return;
|
||||
|
@ -53,7 +68,6 @@ FFZ.prototype.bttv_badges = function(data) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
for (var slot in user.badges) {
|
||||
if ( ! user.badges.hasOwnProperty(slot) )
|
||||
continue;
|
||||
|
@ -61,8 +75,16 @@ FFZ.prototype.bttv_badges = function(data) {
|
|||
var badge = user.badges[slot],
|
||||
full_badge = this.badges[badge.id] || {},
|
||||
desc = badge.title || full_badge.title,
|
||||
style = "",
|
||||
alpha = BetterTTV.settings.get('alphaTags');
|
||||
style = "";
|
||||
|
||||
if ( full_badge.visible !== undefined ) {
|
||||
var visible = full_badge.visible;
|
||||
if ( typeof visible == "function" )
|
||||
visible = visible.bind(this)(null, user_id);
|
||||
|
||||
if ( ! visible )
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( badge.image )
|
||||
style += 'background-image: url(\\"' + badge.image + '\\"); ';
|
||||
|
@ -117,12 +139,21 @@ FFZ.prototype.render_badge = function(view) {
|
|||
if ( full_badge.visible !== undefined ) {
|
||||
var visible = full_badge.visible;
|
||||
if ( typeof visible == "function" )
|
||||
try { visible = visible.bind(this)(room_id, user); } catch(err) { }
|
||||
visible = visible.bind(this)(room_id, user);
|
||||
|
||||
if ( ! visible )
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( full_badge.replaces ) {
|
||||
var el = badges[0].querySelector('.badge.' + full_badge.replaces);
|
||||
if ( el ) {
|
||||
el.style.backgroundImage = 'url("' + (badge.image || full_badge.image) + '")';
|
||||
el.title += ", " + (badge.title || full_badge.title);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var el = document.createElement('div');
|
||||
el.className = 'badge float-left tooltip ffz-badge-' + badge.id;
|
||||
el.setAttribute('title', badge.title || full_badge.title);
|
||||
|
@ -155,24 +186,33 @@ FFZ.prototype.render_badge = function(view) {
|
|||
// Legacy Support
|
||||
// --------------------
|
||||
|
||||
FFZ.known_bots = ["quoteconut", "quoconut", "zenwan", "nightbot", "moobot", "xanbot"];
|
||||
FFZ.bttv_known_bots = ["nightbot","moobot","sourbot","xanbot","manabot","mtgbot","ackbot","baconrobot","tardisbot","deejbot","valuebot","stahpbot"];
|
||||
FFZ.known_bots = ["quoteconut", "quoconut", "zenwan", "triiharder", "wobblerbot", "theroflbotr", "acebot"];
|
||||
|
||||
|
||||
FFZ.prototype._legacy_add_donors = function(tries) {
|
||||
this.badges[1] = {id: 1, title: "FFZ Donor", color: "#755000", image: "//cdn.frankerfacez.com/channel/global/donoricon.png"};
|
||||
utils.update_css(this._badge_style, 1, badge_css(this.badges[1]));
|
||||
|
||||
// Developer Badges
|
||||
// Developer Badge
|
||||
this.badges[0] = {id: 0, title: "FFZ Developer", color: "#FAAF19", image: "//cdn.frankerfacez.com/channel/global/devicon.png"};
|
||||
utils.update_css(this._badge_style, 0, badge_css(this.badges[0]));
|
||||
this.users.sirstendec = {badges: {0: {id:0}}};
|
||||
|
||||
// Bot Badges
|
||||
/*this.badges[2] = {id: 2, title: "Bot", color: "#595959", image: "//cdn.frankerfacez.com/channel/global/boticon.png",
|
||||
visible: function(r,user) { return !(this.has_bttv && FFZ.bttv_known_bots[user]); }};
|
||||
// Bot Badge
|
||||
this.badges[2] = {id: 2, title: "Bot", color: "#595959", image: "//cdn.frankerfacez.com/channel/global/boticon.png",
|
||||
replaces: 'moderator',
|
||||
visible: function(r,user) { return this.settings.bot_badges && !(this.has_bttv && FFZ.bttv_known_bots.indexOf(user)!==-1); }};
|
||||
utils.update_css(this._badge_style, 2, badge_css(this.badges[2]));
|
||||
|
||||
for(var i=0;i<FFZ.bttv_known_bots.length;i++)
|
||||
this.users[FFZ.bttv_known_bots[i]] = {badges: {0: {id:2}}};
|
||||
|
||||
for(var i=0;i<FFZ.known_bots.length;i++)
|
||||
this.users[FFZ.known_bots[i]] = {badges: {1: {id:2}}};*/
|
||||
this.users[FFZ.known_bots[i]] = {badges: {0: {id:2}}};
|
||||
|
||||
// Special Badges
|
||||
this.users.sirstendec = {badges: {1: {id:0}}};
|
||||
this.users.zenwan = {badges: {0: {id:2, image: "//cdn.frankerfacez.com/channel/global/momiglee_badge.png", title: "WAN"}}};
|
||||
|
||||
|
||||
jQuery.ajax(constants.SERVER + "script/donors.txt", {cache: false, context: this})
|
||||
|
@ -202,7 +242,7 @@ FFZ.prototype._legacy_parse_donors = function(data) {
|
|||
if ( badges[0] )
|
||||
continue;
|
||||
|
||||
badges[0] = {id:1};
|
||||
badges[1] = {id:1};
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
|
@ -442,8 +482,7 @@ var FFZ = window.FrankerFaceZ,
|
|||
|
||||
|
||||
data_to_tooltip = function(data) {
|
||||
var output = "<tr><td>Emoticon</td><td>" + data.code + "</td></tr>",
|
||||
set = data.set,
|
||||
var set = data.set,
|
||||
set_type = data.set_type;
|
||||
|
||||
if ( set_type === undefined )
|
||||
|
@ -457,12 +496,7 @@ var FFZ = window.FrankerFaceZ,
|
|||
set_type = null;
|
||||
}
|
||||
|
||||
if ( ! set_type )
|
||||
output += '<tr><td class="center" colspan="2">' + set + '</td></tr>';
|
||||
else
|
||||
output += "<tr><td>" + set_type + "</td><td>" + set + "</td></tr>";
|
||||
|
||||
return '<table class="emote-data">' + output + '</table>';
|
||||
return "Emoticon: " + data.code + "\n" + (set_type ? set_type + ": " : "") + set;
|
||||
},
|
||||
|
||||
build_tooltip = function(id) {
|
||||
|
@ -578,7 +612,7 @@ FFZ.settings_info.keywords = {
|
|||
|
||||
FFZ.settings_info.fix_color = {
|
||||
type: "boolean",
|
||||
value: false,
|
||||
value: true,
|
||||
|
||||
category: "Chat",
|
||||
visible: function() { return ! this.has_bttv },
|
||||
|
@ -647,6 +681,7 @@ FFZ.prototype.setup_line = function() {
|
|||
var tokens = this._super();
|
||||
|
||||
try {
|
||||
var start = performance.now();
|
||||
tokens = f._remove_banned(tokens);
|
||||
tokens = f._emoticonize(this, tokens);
|
||||
var user = f.get_user();
|
||||
|
@ -654,6 +689,10 @@ FFZ.prototype.setup_line = function() {
|
|||
if ( ! user || this.get("model.from") != user.login )
|
||||
tokens = f._mentionize(this, tokens);
|
||||
|
||||
var end = performance.now();
|
||||
if ( end - start > 5 )
|
||||
f.log("Tokenizing Message Took Too Long - " + (end-start) + "ms - " + JSON.stringify(tokens));
|
||||
|
||||
} catch(err) {
|
||||
try {
|
||||
f.error("LineController tokenizedMessage: " + err);
|
||||
|
@ -673,6 +712,8 @@ FFZ.prototype.setup_line = function() {
|
|||
didInsertElement: function() {
|
||||
this._super();
|
||||
try {
|
||||
var start = performance.now();
|
||||
|
||||
var el = this.get('element'),
|
||||
controller = this.get('context'),
|
||||
user = controller.get('model.from'),
|
||||
|
@ -715,7 +756,7 @@ FFZ.prototype.setup_line = function() {
|
|||
if ( mentioned ) {
|
||||
el.classList.add("ffz-mentioned");
|
||||
|
||||
if ( ! document.hasFocus() && ! this.get('context.model.ffz_notified') && f.settings.highlight_notifications ) {
|
||||
if ( f.settings.highlight_notifications && !document.hasFocus() && !this.get('context.model.ffz_notified') ) {
|
||||
var cap_room = FFZ.get_capitalization(room),
|
||||
cap_user = FFZ.get_capitalization(user),
|
||||
room_name = cap_room,
|
||||
|
@ -783,7 +824,7 @@ FFZ.prototype.setup_line = function() {
|
|||
|
||||
|
||||
// Enhanced Emotes
|
||||
var images = el.querySelectorAll('img');
|
||||
var images = el.querySelectorAll('img.emoticon');
|
||||
for(var i=0; i < images.length; i++) {
|
||||
var img = images[i],
|
||||
name = img.alt,
|
||||
|
@ -806,8 +847,6 @@ FFZ.prototype.setup_line = function() {
|
|||
f.ws_send("twitch_emote", id, load_emote_data.bind(f, id, img.alt));
|
||||
}
|
||||
|
||||
jQuery(img).tipsy({html:true});
|
||||
|
||||
} else if ( img.getAttribute('data-ffz-emote') ) {
|
||||
var data = JSON.parse(decodeURIComponent(img.getAttribute('data-ffz-emote'))),
|
||||
id = data && data[0] || null,
|
||||
|
@ -835,13 +874,15 @@ FFZ.prototype.setup_line = function() {
|
|||
set: set_name,
|
||||
set_type: set_type
|
||||
});
|
||||
|
||||
jQuery(img).tipsy({html:true});
|
||||
|
||||
} else
|
||||
jQuery(img).tipsy();
|
||||
}
|
||||
}
|
||||
|
||||
jQuery(images).tipsy();
|
||||
|
||||
|
||||
var duration = performance.now() - start;
|
||||
if ( duration > 5 )
|
||||
f.log("Line Took Too Long - " + duration + "ms - " + el.innerHTML);
|
||||
|
||||
} catch(err) {
|
||||
try {
|
||||
|
@ -887,7 +928,7 @@ FFZ.prototype._handle_color = function(color) {
|
|||
// Color Too Bright. We need a lum of 0.3 or less.
|
||||
matched = true;
|
||||
|
||||
var s = 255,
|
||||
var s = 127,
|
||||
nc = rgb;
|
||||
while(s--) {
|
||||
nc = utils.darken(nc);
|
||||
|
@ -899,15 +940,15 @@ FFZ.prototype._handle_color = function(color) {
|
|||
} else
|
||||
output += '.ffz-chat-colors .ember-chat-container:not(.dark) .chat-line ' + rule + ', .ffz-chat-colors .chat-container:not(.dark) .chat-line ' + rule + ' { color: ' + color + ' !important; }\n';
|
||||
|
||||
if ( lum < 0.1 ) {
|
||||
if ( lum < 0.15 ) {
|
||||
// Color Too Dark. We need a lum of 0.1 or more.
|
||||
matched = true;
|
||||
|
||||
var s = 255,
|
||||
var s = 127,
|
||||
nc = rgb;
|
||||
while(s--) {
|
||||
nc = utils.brighten(nc);
|
||||
if ( utils.get_luminance(nc) >= 0.1 )
|
||||
if ( utils.get_luminance(nc) >= 0.15 )
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -962,8 +1003,11 @@ FFZ.get_capitalization = function(name, callback) {
|
|||
|
||||
FFZ.prototype.capitalize = function(view, user) {
|
||||
var name = FFZ.get_capitalization(user, this.capitalize.bind(this, view));
|
||||
if ( name && view )
|
||||
view.$('.from').text(name);
|
||||
if ( !name || !view )
|
||||
return;
|
||||
|
||||
var from = view.$('.from');
|
||||
from && from.text(name);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1396,7 +1440,7 @@ var FFZ = window.FrankerFaceZ,
|
|||
if ( ! room.moderator_badge )
|
||||
return "";
|
||||
|
||||
return '.chat-line[data-room="' + room.id + '"] .badges .moderator { background-image:url("' + room.moderator_badge + '") !important; }';
|
||||
return '.chat-line[data-room="' + room.id + '"] .badges .moderator { background-image:url("' + room.moderator_badge + '"); }';
|
||||
}
|
||||
|
||||
|
||||
|
@ -2052,8 +2096,6 @@ var FFZ = window.FrankerFaceZ,
|
|||
SENDER_REGEX = /(\sdata-sender="[^"]*"(?=>))/;
|
||||
|
||||
|
||||
FFZ.bttv_known_bots = ["nightbot","moobot","sourbot","xanbot","manabot","mtgbot","ackbot","baconrobot","tardisbot","deejbot","valuebot","stahpbot"];
|
||||
|
||||
// --------------------
|
||||
// Initialization
|
||||
// --------------------
|
||||
|
@ -2291,7 +2333,7 @@ FFZ.get = function() { return FFZ.instance; }
|
|||
|
||||
// Version
|
||||
var VER = FFZ.version_info = {
|
||||
major: 3, minor: 2, revision: 1,
|
||||
major: 3, minor: 2, revision: 2,
|
||||
toString: function() {
|
||||
return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || "");
|
||||
}
|
||||
|
@ -3051,7 +3093,10 @@ FFZ.prototype.ws_create = function() {
|
|||
} else {
|
||||
var success = cmd === 'True',
|
||||
callback = f._ws_callbacks[request];
|
||||
|
||||
if ( ! success || ! callback )
|
||||
f.log("Socket Reply to " + request + " - " + (success ? "SUCCESS" : "FAIL"), data);
|
||||
|
||||
if ( callback ) {
|
||||
delete f._ws_callbacks[request];
|
||||
callback(success, data);
|
||||
|
@ -3623,6 +3668,22 @@ var FFZ = window.FrankerFaceZ,
|
|||
TWITCH_BASE = "http://static-cdn.jtvnw.net/emoticons/v1/",
|
||||
BANNED_SETS = {"00000turbo":true},
|
||||
|
||||
KNOWN_CODES = {
|
||||
"B-?\\)": "B-)",
|
||||
"\\:-?[z|Z|\\|]": ":-Z",
|
||||
"\\:-?\\)": ":-)",
|
||||
"\\:-?\\(": ":-(",
|
||||
"\\:-?(p|P)": ":-P",
|
||||
"\\;-?(p|P)": ";-P",
|
||||
"\\<\\;3": "<3",
|
||||
"\\:-?(?:\\/|\\\\)(?!\\/)": ":-/",
|
||||
"\\;-?\\)": ";-)",
|
||||
"R-?\\)": "R-)",
|
||||
"[o|O](_|\\.)[o|O]": "O.o",
|
||||
"\\:-?D": ":-D",
|
||||
"\\:-?(o|O)": ":-O",
|
||||
"\\>\\;\\(": ">(",
|
||||
},
|
||||
|
||||
get_emotes = function(ffz) {
|
||||
var Chat = App.__container__.lookup('controller:chat'),
|
||||
|
@ -3637,6 +3698,9 @@ var FFZ = window.FrankerFaceZ,
|
|||
// Remove the 'default' set.
|
||||
set_ids = set_ids.split(",").removeObject("0")
|
||||
|
||||
if ( ffz.settings.global_emotes_in_menu )
|
||||
set_ids.push("0");
|
||||
|
||||
return [set_ids, user_sets];
|
||||
};
|
||||
|
||||
|
@ -3645,6 +3709,15 @@ var FFZ = window.FrankerFaceZ,
|
|||
// Initialization
|
||||
// -------------------
|
||||
|
||||
FFZ.settings_info.global_emotes_in_menu = {
|
||||
type: "boolean",
|
||||
value: false,
|
||||
|
||||
name: "Display Global Emotes in My Emotes",
|
||||
help: "Display the global Twitch emotes in the My Emoticons menu."
|
||||
};
|
||||
|
||||
|
||||
FFZ.prototype.setup_my_emotes = function() {
|
||||
this._twitch_emote_sets = {};
|
||||
this._twitch_set_to_channel = {};
|
||||
|
@ -3654,6 +3727,8 @@ FFZ.prototype.setup_my_emotes = function() {
|
|||
this._twitch_set_to_channel = JSON.parse(localStorage.ffzTwitchSets);
|
||||
} catch(err) { }
|
||||
}
|
||||
|
||||
this._twitch_set_to_channel[0] = "twitch_global";
|
||||
}
|
||||
|
||||
|
||||
|
@ -3715,6 +3790,13 @@ FFZ.menu_pages.my_emotes = {
|
|||
if ( !name || BANNED_SETS[name] )
|
||||
return;
|
||||
|
||||
if ( name == "twitch_global" ) {
|
||||
FFZ.capitalization["global emoticons"] = ["Global Emoticons", Date.now()];
|
||||
set.channel = "Global Emoticons";
|
||||
set.badge = "//cdn.frankerfacez.com/channel/global/twitch_logo.png";
|
||||
return;
|
||||
}
|
||||
|
||||
if ( name == "turbo" ) {
|
||||
set.channel = "Twitch Turbo";
|
||||
set.badge = "//cdn.frankerfacez.com/script/turbo_badge.png";
|
||||
|
@ -3839,10 +3921,10 @@ FFZ.menu_pages.my_emotes = {
|
|||
var an = a[1].toLowerCase(),
|
||||
bn = b[1].toLowerCase();
|
||||
|
||||
if ( an === "twitch turbo" )
|
||||
if ( an === "twitch turbo" || an === "global emoticons" )
|
||||
an = "zzz" + an;
|
||||
|
||||
if ( bn === "twitch turbo" )
|
||||
if ( bn === "twitch turbo" || bn === "global emoticons" )
|
||||
bn = "zzz" + bn;
|
||||
|
||||
if ( an < bn ) return -1;
|
||||
|
@ -3864,7 +3946,8 @@ FFZ.menu_pages.my_emotes = {
|
|||
menu.appendChild(heading);
|
||||
|
||||
for(var x=0; x < set.emotes.length; x++) {
|
||||
var emote = set.emotes[x];
|
||||
var emote = set.emotes[x],
|
||||
code = KNOWN_CODES[emote.code] || emote.code;
|
||||
|
||||
var s = document.createElement('span');
|
||||
s.className = 'emoticon tooltip';
|
||||
|
@ -3876,8 +3959,8 @@ FFZ.menu_pages.my_emotes = {
|
|||
s.style.backgroundImage = '-ms-' + img_set;
|
||||
s.style.backgroundImage = img_set;
|
||||
|
||||
s.title = emote.code;
|
||||
s.addEventListener('click', f._add_emote.bind(f, view, emote.code));
|
||||
s.title = code;
|
||||
s.addEventListener('click', f._add_emote.bind(f, view, code));
|
||||
menu.appendChild(s);
|
||||
}
|
||||
|
||||
|
|
6
script.min.js
vendored
6
script.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -3,6 +3,20 @@ var FFZ = window.FrankerFaceZ,
|
|||
utils = require('./utils');
|
||||
|
||||
|
||||
// --------------------
|
||||
// Settings
|
||||
// --------------------
|
||||
|
||||
FFZ.settings_info.bot_badges = {
|
||||
type: "boolean",
|
||||
value: true,
|
||||
|
||||
category: "Chat",
|
||||
name: "Bot Badges",
|
||||
help: "Give special badges to known bots."
|
||||
};
|
||||
|
||||
|
||||
// --------------------
|
||||
// Initialization
|
||||
// --------------------
|
||||
|
@ -38,7 +52,8 @@ FFZ.prototype.bttv_badges = function(data) {
|
|||
var user_id = data.sender,
|
||||
user = this.users[user_id],
|
||||
badges_out = [],
|
||||
insert_at = -1;
|
||||
insert_at = -1,
|
||||
alpha = BetterTTV.settings.get('alphaTags');
|
||||
|
||||
if ( ! user || ! user.badges )
|
||||
return;
|
||||
|
@ -52,7 +67,6 @@ FFZ.prototype.bttv_badges = function(data) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
for (var slot in user.badges) {
|
||||
if ( ! user.badges.hasOwnProperty(slot) )
|
||||
continue;
|
||||
|
@ -60,8 +74,16 @@ FFZ.prototype.bttv_badges = function(data) {
|
|||
var badge = user.badges[slot],
|
||||
full_badge = this.badges[badge.id] || {},
|
||||
desc = badge.title || full_badge.title,
|
||||
style = "",
|
||||
alpha = BetterTTV.settings.get('alphaTags');
|
||||
style = "";
|
||||
|
||||
if ( full_badge.visible !== undefined ) {
|
||||
var visible = full_badge.visible;
|
||||
if ( typeof visible == "function" )
|
||||
visible = visible.bind(this)(null, user_id);
|
||||
|
||||
if ( ! visible )
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( badge.image )
|
||||
style += 'background-image: url(\\"' + badge.image + '\\"); ';
|
||||
|
@ -116,12 +138,21 @@ FFZ.prototype.render_badge = function(view) {
|
|||
if ( full_badge.visible !== undefined ) {
|
||||
var visible = full_badge.visible;
|
||||
if ( typeof visible == "function" )
|
||||
try { visible = visible.bind(this)(room_id, user); } catch(err) { }
|
||||
visible = visible.bind(this)(room_id, user);
|
||||
|
||||
if ( ! visible )
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( full_badge.replaces ) {
|
||||
var el = badges[0].querySelector('.badge.' + full_badge.replaces);
|
||||
if ( el ) {
|
||||
el.style.backgroundImage = 'url("' + (badge.image || full_badge.image) + '")';
|
||||
el.title += ", " + (badge.title || full_badge.title);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var el = document.createElement('div');
|
||||
el.className = 'badge float-left tooltip ffz-badge-' + badge.id;
|
||||
el.setAttribute('title', badge.title || full_badge.title);
|
||||
|
@ -154,24 +185,33 @@ FFZ.prototype.render_badge = function(view) {
|
|||
// Legacy Support
|
||||
// --------------------
|
||||
|
||||
FFZ.known_bots = ["quoteconut", "quoconut", "zenwan", "nightbot", "moobot", "xanbot"];
|
||||
FFZ.bttv_known_bots = ["nightbot","moobot","sourbot","xanbot","manabot","mtgbot","ackbot","baconrobot","tardisbot","deejbot","valuebot","stahpbot"];
|
||||
FFZ.known_bots = ["quoteconut", "quoconut", "zenwan", "triiharder", "wobblerbot", "theroflbotr", "acebot"];
|
||||
|
||||
|
||||
FFZ.prototype._legacy_add_donors = function(tries) {
|
||||
this.badges[1] = {id: 1, title: "FFZ Donor", color: "#755000", image: "//cdn.frankerfacez.com/channel/global/donoricon.png"};
|
||||
utils.update_css(this._badge_style, 1, badge_css(this.badges[1]));
|
||||
|
||||
// Developer Badges
|
||||
// Developer Badge
|
||||
this.badges[0] = {id: 0, title: "FFZ Developer", color: "#FAAF19", image: "//cdn.frankerfacez.com/channel/global/devicon.png"};
|
||||
utils.update_css(this._badge_style, 0, badge_css(this.badges[0]));
|
||||
this.users.sirstendec = {badges: {0: {id:0}}};
|
||||
|
||||
// Bot Badges
|
||||
/*this.badges[2] = {id: 2, title: "Bot", color: "#595959", image: "//cdn.frankerfacez.com/channel/global/boticon.png",
|
||||
visible: function(r,user) { return !(this.has_bttv && FFZ.bttv_known_bots[user]); }};
|
||||
// Bot Badge
|
||||
this.badges[2] = {id: 2, title: "Bot", color: "#595959", image: "//cdn.frankerfacez.com/channel/global/boticon.png",
|
||||
replaces: 'moderator',
|
||||
visible: function(r,user) { return this.settings.bot_badges && !(this.has_bttv && FFZ.bttv_known_bots.indexOf(user)!==-1); }};
|
||||
utils.update_css(this._badge_style, 2, badge_css(this.badges[2]));
|
||||
|
||||
for(var i=0;i<FFZ.bttv_known_bots.length;i++)
|
||||
this.users[FFZ.bttv_known_bots[i]] = {badges: {0: {id:2}}};
|
||||
|
||||
for(var i=0;i<FFZ.known_bots.length;i++)
|
||||
this.users[FFZ.known_bots[i]] = {badges: {1: {id:2}}};*/
|
||||
this.users[FFZ.known_bots[i]] = {badges: {0: {id:2}}};
|
||||
|
||||
// Special Badges
|
||||
this.users.sirstendec = {badges: {1: {id:0}}};
|
||||
this.users.zenwan = {badges: {0: {id:2, image: "//cdn.frankerfacez.com/channel/global/momiglee_badge.png", title: "WAN"}}};
|
||||
|
||||
|
||||
jQuery.ajax(constants.SERVER + "script/donors.txt", {cache: false, context: this})
|
||||
|
@ -201,7 +241,7 @@ FFZ.prototype._legacy_parse_donors = function(data) {
|
|||
if ( badges[0] )
|
||||
continue;
|
||||
|
||||
badges[0] = {id:1};
|
||||
badges[1] = {id:1};
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,8 +25,7 @@ var FFZ = window.FrankerFaceZ,
|
|||
|
||||
|
||||
data_to_tooltip = function(data) {
|
||||
var output = "<tr><td>Emoticon</td><td>" + data.code + "</td></tr>",
|
||||
set = data.set,
|
||||
var set = data.set,
|
||||
set_type = data.set_type;
|
||||
|
||||
if ( set_type === undefined )
|
||||
|
@ -40,12 +39,7 @@ var FFZ = window.FrankerFaceZ,
|
|||
set_type = null;
|
||||
}
|
||||
|
||||
if ( ! set_type )
|
||||
output += '<tr><td class="center" colspan="2">' + set + '</td></tr>';
|
||||
else
|
||||
output += "<tr><td>" + set_type + "</td><td>" + set + "</td></tr>";
|
||||
|
||||
return '<table class="emote-data">' + output + '</table>';
|
||||
return "Emoticon: " + data.code + "\n" + (set_type ? set_type + ": " : "") + set;
|
||||
},
|
||||
|
||||
build_tooltip = function(id) {
|
||||
|
@ -161,7 +155,7 @@ FFZ.settings_info.keywords = {
|
|||
|
||||
FFZ.settings_info.fix_color = {
|
||||
type: "boolean",
|
||||
value: false,
|
||||
value: true,
|
||||
|
||||
category: "Chat",
|
||||
visible: function() { return ! this.has_bttv },
|
||||
|
@ -230,6 +224,7 @@ FFZ.prototype.setup_line = function() {
|
|||
var tokens = this._super();
|
||||
|
||||
try {
|
||||
var start = performance.now();
|
||||
tokens = f._remove_banned(tokens);
|
||||
tokens = f._emoticonize(this, tokens);
|
||||
var user = f.get_user();
|
||||
|
@ -237,6 +232,10 @@ FFZ.prototype.setup_line = function() {
|
|||
if ( ! user || this.get("model.from") != user.login )
|
||||
tokens = f._mentionize(this, tokens);
|
||||
|
||||
var end = performance.now();
|
||||
if ( end - start > 5 )
|
||||
f.log("Tokenizing Message Took Too Long - " + (end-start) + "ms - " + JSON.stringify(tokens));
|
||||
|
||||
} catch(err) {
|
||||
try {
|
||||
f.error("LineController tokenizedMessage: " + err);
|
||||
|
@ -256,6 +255,8 @@ FFZ.prototype.setup_line = function() {
|
|||
didInsertElement: function() {
|
||||
this._super();
|
||||
try {
|
||||
var start = performance.now();
|
||||
|
||||
var el = this.get('element'),
|
||||
controller = this.get('context'),
|
||||
user = controller.get('model.from'),
|
||||
|
@ -298,7 +299,7 @@ FFZ.prototype.setup_line = function() {
|
|||
if ( mentioned ) {
|
||||
el.classList.add("ffz-mentioned");
|
||||
|
||||
if ( ! document.hasFocus() && ! this.get('context.model.ffz_notified') && f.settings.highlight_notifications ) {
|
||||
if ( f.settings.highlight_notifications && !document.hasFocus() && !this.get('context.model.ffz_notified') ) {
|
||||
var cap_room = FFZ.get_capitalization(room),
|
||||
cap_user = FFZ.get_capitalization(user),
|
||||
room_name = cap_room,
|
||||
|
@ -366,7 +367,7 @@ FFZ.prototype.setup_line = function() {
|
|||
|
||||
|
||||
// Enhanced Emotes
|
||||
var images = el.querySelectorAll('img');
|
||||
var images = el.querySelectorAll('img.emoticon');
|
||||
for(var i=0; i < images.length; i++) {
|
||||
var img = images[i],
|
||||
name = img.alt,
|
||||
|
@ -389,8 +390,6 @@ FFZ.prototype.setup_line = function() {
|
|||
f.ws_send("twitch_emote", id, load_emote_data.bind(f, id, img.alt));
|
||||
}
|
||||
|
||||
jQuery(img).tipsy({html:true});
|
||||
|
||||
} else if ( img.getAttribute('data-ffz-emote') ) {
|
||||
var data = JSON.parse(decodeURIComponent(img.getAttribute('data-ffz-emote'))),
|
||||
id = data && data[0] || null,
|
||||
|
@ -418,13 +417,15 @@ FFZ.prototype.setup_line = function() {
|
|||
set: set_name,
|
||||
set_type: set_type
|
||||
});
|
||||
|
||||
jQuery(img).tipsy({html:true});
|
||||
|
||||
} else
|
||||
jQuery(img).tipsy();
|
||||
}
|
||||
}
|
||||
|
||||
jQuery(images).tipsy();
|
||||
|
||||
|
||||
var duration = performance.now() - start;
|
||||
if ( duration > 5 )
|
||||
f.log("Line Took Too Long - " + duration + "ms - " + el.innerHTML);
|
||||
|
||||
} catch(err) {
|
||||
try {
|
||||
|
@ -470,7 +471,7 @@ FFZ.prototype._handle_color = function(color) {
|
|||
// Color Too Bright. We need a lum of 0.3 or less.
|
||||
matched = true;
|
||||
|
||||
var s = 255,
|
||||
var s = 127,
|
||||
nc = rgb;
|
||||
while(s--) {
|
||||
nc = utils.darken(nc);
|
||||
|
@ -482,15 +483,15 @@ FFZ.prototype._handle_color = function(color) {
|
|||
} else
|
||||
output += '.ffz-chat-colors .ember-chat-container:not(.dark) .chat-line ' + rule + ', .ffz-chat-colors .chat-container:not(.dark) .chat-line ' + rule + ' { color: ' + color + ' !important; }\n';
|
||||
|
||||
if ( lum < 0.1 ) {
|
||||
if ( lum < 0.15 ) {
|
||||
// Color Too Dark. We need a lum of 0.1 or more.
|
||||
matched = true;
|
||||
|
||||
var s = 255,
|
||||
var s = 127,
|
||||
nc = rgb;
|
||||
while(s--) {
|
||||
nc = utils.brighten(nc);
|
||||
if ( utils.get_luminance(nc) >= 0.1 )
|
||||
if ( utils.get_luminance(nc) >= 0.15 )
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -545,8 +546,11 @@ FFZ.get_capitalization = function(name, callback) {
|
|||
|
||||
FFZ.prototype.capitalize = function(view, user) {
|
||||
var name = FFZ.get_capitalization(user, this.capitalize.bind(this, view));
|
||||
if ( name && view )
|
||||
view.$('.from').text(name);
|
||||
if ( !name || !view )
|
||||
return;
|
||||
|
||||
var from = view.$('.from');
|
||||
from && from.text(name);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ var FFZ = window.FrankerFaceZ,
|
|||
if ( ! room.moderator_badge )
|
||||
return "";
|
||||
|
||||
return '.chat-line[data-room="' + room.id + '"] .badges .moderator { background-image:url("' + room.moderator_badge + '") !important; }';
|
||||
return '.chat-line[data-room="' + room.id + '"] .badges .moderator { background-image:url("' + room.moderator_badge + '"); }';
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@ var FFZ = window.FrankerFaceZ,
|
|||
SENDER_REGEX = /(\sdata-sender="[^"]*"(?=>))/;
|
||||
|
||||
|
||||
FFZ.bttv_known_bots = ["nightbot","moobot","sourbot","xanbot","manabot","mtgbot","ackbot","baconrobot","tardisbot","deejbot","valuebot","stahpbot"];
|
||||
|
||||
// --------------------
|
||||
// Initialization
|
||||
// --------------------
|
||||
|
|
|
@ -22,7 +22,7 @@ FFZ.get = function() { return FFZ.instance; }
|
|||
|
||||
// Version
|
||||
var VER = FFZ.version_info = {
|
||||
major: 3, minor: 2, revision: 1,
|
||||
major: 3, minor: 2, revision: 2,
|
||||
toString: function() {
|
||||
return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || "");
|
||||
}
|
||||
|
|
|
@ -99,7 +99,10 @@ FFZ.prototype.ws_create = function() {
|
|||
} else {
|
||||
var success = cmd === 'True',
|
||||
callback = f._ws_callbacks[request];
|
||||
|
||||
if ( ! success || ! callback )
|
||||
f.log("Socket Reply to " + request + " - " + (success ? "SUCCESS" : "FAIL"), data);
|
||||
|
||||
if ( callback ) {
|
||||
delete f._ws_callbacks[request];
|
||||
callback(success, data);
|
||||
|
|
|
@ -4,6 +4,22 @@ var FFZ = window.FrankerFaceZ,
|
|||
TWITCH_BASE = "http://static-cdn.jtvnw.net/emoticons/v1/",
|
||||
BANNED_SETS = {"00000turbo":true},
|
||||
|
||||
KNOWN_CODES = {
|
||||
"B-?\\)": "B-)",
|
||||
"\\:-?[z|Z|\\|]": ":-Z",
|
||||
"\\:-?\\)": ":-)",
|
||||
"\\:-?\\(": ":-(",
|
||||
"\\:-?(p|P)": ":-P",
|
||||
"\\;-?(p|P)": ";-P",
|
||||
"\\<\\;3": "<3",
|
||||
"\\:-?(?:\\/|\\\\)(?!\\/)": ":-/",
|
||||
"\\;-?\\)": ";-)",
|
||||
"R-?\\)": "R-)",
|
||||
"[o|O](_|\\.)[o|O]": "O.o",
|
||||
"\\:-?D": ":-D",
|
||||
"\\:-?(o|O)": ":-O",
|
||||
"\\>\\;\\(": ">(",
|
||||
},
|
||||
|
||||
get_emotes = function(ffz) {
|
||||
var Chat = App.__container__.lookup('controller:chat'),
|
||||
|
@ -18,6 +34,9 @@ var FFZ = window.FrankerFaceZ,
|
|||
// Remove the 'default' set.
|
||||
set_ids = set_ids.split(",").removeObject("0")
|
||||
|
||||
if ( ffz.settings.global_emotes_in_menu )
|
||||
set_ids.push("0");
|
||||
|
||||
return [set_ids, user_sets];
|
||||
};
|
||||
|
||||
|
@ -26,6 +45,15 @@ var FFZ = window.FrankerFaceZ,
|
|||
// Initialization
|
||||
// -------------------
|
||||
|
||||
FFZ.settings_info.global_emotes_in_menu = {
|
||||
type: "boolean",
|
||||
value: false,
|
||||
|
||||
name: "Display Global Emotes in My Emotes",
|
||||
help: "Display the global Twitch emotes in the My Emoticons menu."
|
||||
};
|
||||
|
||||
|
||||
FFZ.prototype.setup_my_emotes = function() {
|
||||
this._twitch_emote_sets = {};
|
||||
this._twitch_set_to_channel = {};
|
||||
|
@ -35,6 +63,8 @@ FFZ.prototype.setup_my_emotes = function() {
|
|||
this._twitch_set_to_channel = JSON.parse(localStorage.ffzTwitchSets);
|
||||
} catch(err) { }
|
||||
}
|
||||
|
||||
this._twitch_set_to_channel[0] = "twitch_global";
|
||||
}
|
||||
|
||||
|
||||
|
@ -96,6 +126,13 @@ FFZ.menu_pages.my_emotes = {
|
|||
if ( !name || BANNED_SETS[name] )
|
||||
return;
|
||||
|
||||
if ( name == "twitch_global" ) {
|
||||
FFZ.capitalization["global emoticons"] = ["Global Emoticons", Date.now()];
|
||||
set.channel = "Global Emoticons";
|
||||
set.badge = "//cdn.frankerfacez.com/channel/global/twitch_logo.png";
|
||||
return;
|
||||
}
|
||||
|
||||
if ( name == "turbo" ) {
|
||||
set.channel = "Twitch Turbo";
|
||||
set.badge = "//cdn.frankerfacez.com/script/turbo_badge.png";
|
||||
|
@ -220,10 +257,10 @@ FFZ.menu_pages.my_emotes = {
|
|||
var an = a[1].toLowerCase(),
|
||||
bn = b[1].toLowerCase();
|
||||
|
||||
if ( an === "twitch turbo" )
|
||||
if ( an === "twitch turbo" || an === "global emoticons" )
|
||||
an = "zzz" + an;
|
||||
|
||||
if ( bn === "twitch turbo" )
|
||||
if ( bn === "twitch turbo" || bn === "global emoticons" )
|
||||
bn = "zzz" + bn;
|
||||
|
||||
if ( an < bn ) return -1;
|
||||
|
@ -245,7 +282,8 @@ FFZ.menu_pages.my_emotes = {
|
|||
menu.appendChild(heading);
|
||||
|
||||
for(var x=0; x < set.emotes.length; x++) {
|
||||
var emote = set.emotes[x];
|
||||
var emote = set.emotes[x],
|
||||
code = KNOWN_CODES[emote.code] || emote.code;
|
||||
|
||||
var s = document.createElement('span');
|
||||
s.className = 'emoticon tooltip';
|
||||
|
@ -257,8 +295,8 @@ FFZ.menu_pages.my_emotes = {
|
|||
s.style.backgroundImage = '-ms-' + img_set;
|
||||
s.style.backgroundImage = img_set;
|
||||
|
||||
s.title = emote.code;
|
||||
s.addEventListener('click', f._add_emote.bind(f, view, emote.code));
|
||||
s.title = code;
|
||||
s.addEventListener('click', f._add_emote.bind(f, view, code));
|
||||
menu.appendChild(s);
|
||||
}
|
||||
|
||||
|
|
18
style.css
18
style.css
|
@ -433,7 +433,9 @@
|
|||
|
||||
.ffz-ui-popup.dark .ffz-ui-menu-page a { color: #fff; }
|
||||
|
||||
.ffz-dark .ffz-ui-popup ul.menu svg path,
|
||||
.ffz-ui-popup.dark ul.menu svg path { fill: #d3d3d3; }
|
||||
|
||||
.ffz-ui-popup ul.menu svg path { fill: #333; }
|
||||
|
||||
|
||||
|
@ -588,22 +590,10 @@
|
|||
|
||||
/* Emoticon Tooltips */
|
||||
|
||||
.tipsy table.emote-data td { padding: 0 2px; }
|
||||
|
||||
.tipsy table.emote-data td:first-of-type {
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
padding-left: 0;
|
||||
.tipsy .tipsy-inner {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.tipsy table.emote-data td:last-of-type {
|
||||
text-align: left;
|
||||
padding-right: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tipsy table.emote-data td.center { text-align: center; }
|
||||
|
||||
/* Menu Page Loader */
|
||||
|
||||
.ffz-ui-menu-page:empty {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue