1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-08-02 16:08:31 +00:00

3.5.472. Add new Verified badge. Add separate transparent image support for badges. Misc. minor bug fixes.

This commit is contained in:
SirStendec 2017-04-22 22:34:22 -04:00
parent e2803a7e1d
commit efaf46ee75
13 changed files with 183 additions and 71 deletions

View file

@ -1,4 +1,17 @@
<div class="list-header">3.5.471 <time datetime="2017-04-11">(2017-04-11)</time></div> <div class="list-header">3.5.472 <time datetime="2017-04-22">(2017-04-22)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Added: Support for the new Verified badge.</li>
<li>Changed: Add support for badges that have different images when rendered transparently.</li>
<li>Fixed: Add temporary fix for mod card and FFZ menu positioning until Twitch fixes their CSS.</li>
<li>Fixed: Unable to favorite some emoticons added through the API.</li>
<li>Fixed: Fetch Twitch Inventory correctly rather than guessing about which sets are inventory sets.</li>
<li>Fixed: Properly label Twitch Inventory sets in the tab completion UI.</li>
<li>Fixed: Update the favorited status of emotes in the tab completion UI when it is changed.</li>
<li>Fixed: Do not show <code>Channel: undefined</code> for emoticons from unknown sets. They might not be from a channel, and it looks bad.</li>
<li>Fixed: Link colors in the top navigation bar when using a bright color with the dark theme enabled.</li>
</ul>
<div class="list-header">3.5.471 <time datetime="2017-04-21">(2017-04-21)</time></div>
<ul class="chat-menu-content menu-side-padding"> <ul class="chat-menu-content menu-side-padding">
<li>Added: Friend Watching Notifications setting to show notifications when you get a message that a friend is also watching the same channel.</li> <li>Added: Friend Watching Notifications setting to show notifications when you get a message that a friend is also watching the same channel.</li>
<li>Added: Highlight Users setting to highlight all messages from specific users to tide people over until FFZv4.</li> <li>Added: Highlight Users setting to highlight all messages from specific users to tide people over until FFZv4.</li>
@ -9,17 +22,17 @@
<li>Fixed: Don't re-enable gray mode if a user has it specifically disabled and they enable dark mode via the Twitch chat settings menu.</li> <li>Fixed: Don't re-enable gray mode if a user has it specifically disabled and they enable dark mode via the Twitch chat settings menu.</li>
</ul> </ul>
<div class="list-header">3.5.470 <time datetime="2017-04-11">(2017-04-11)</time></div> <div class="list-header">3.5.470 <time datetime="2017-04-20">(2017-04-20)</time></div>
<ul class="chat-menu-content menu-side-padding"> <ul class="chat-menu-content menu-side-padding">
<li>Changed: More improved wording for the ITAD popup.</li> <li>Changed: More improved wording for the ITAD popup.</li>
</ul> </ul>
<div class="list-header">3.5.469 <time datetime="2017-04-11">(2017-04-11)</time></div> <div class="list-header">3.5.469 <time datetime="2017-04-20">(2017-04-20)</time></div>
<ul class="chat-menu-content menu-side-padding"> <ul class="chat-menu-content menu-side-padding">
<li>Changed: Add a bit more nagging when trying to buy from ITAD when a streamer would be supported.</li> <li>Changed: Add a bit more nagging when trying to buy from ITAD when a streamer would be supported.</li>
</ul> </ul>
<div class="list-header">3.5.468 <time datetime="2017-04-11">(2017-04-11)</time></div> <div class="list-header">3.5.468 <time datetime="2017-04-20">(2017-04-20)</time></div>
<ul class="chat-menu-content menu-side-padding"> <ul class="chat-menu-content menu-side-padding">
<li>Changed: Improved the wording for the disclaimer on the ITAD popup.</li> <li>Changed: Improved the wording for the disclaimer on the ITAD popup.</li>
</ul> </ul>
@ -53,10 +66,5 @@
<li>Added: Improved compatibility with BetterTTV v7 (aka the beta)</li> <li>Added: Improved compatibility with BetterTTV v7 (aka the beta)</li>
</ul> </ul>
<div class="list-header">3.5.462 <time datetime="2017-04-08">(2017-04-08)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Fixed: Rendering of <code>system-msg</code> tags that contain template strings or other nonsense that Twitch, for some reason, isn't just putting in the message itself and is making the client reconstruct from tags.</li>
</ul>
<div class="list-header" id="ffz-old-news-button"><a href="#">View Older</a></div> <div class="list-header" id="ffz-old-news-button"><a href="#">View Older</a></div>
<div id="ffz-old-news"></div> <div id="ffz-old-news"></div>

View file

@ -1,3 +1,8 @@
<div class="list-header">3.5.462 <time datetime="2017-04-08">(2017-04-08)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Fixed: Rendering of <code>system-msg</code> tags that contain template strings or other nonsense that Twitch, for some reason, isn't just putting in the message itself and is making the client reconstruct from tags.</li>
</ul>
<div class="list-header">3.5.461 <time datetime="2017-04-08">(2017-04-08)</time></div> <div class="list-header">3.5.461 <time datetime="2017-04-08">(2017-04-08)</time></div>
<ul class="chat-menu-content menu-side-padding"> <ul class="chat-menu-content menu-side-padding">
<li>Fixed: Potential infinite loop in new prefix detection code.</li> <li>Fixed: Potential infinite loop in new prefix detection code.</li>

View file

@ -3,7 +3,7 @@ var FFZ = window.FrankerFaceZ,
utils = require('./utils'), utils = require('./utils'),
SPECIAL_BADGES = ['staff', 'admin', 'global_mod'], SPECIAL_BADGES = ['staff', 'admin', 'global_mod'],
OTHER_KNOWN = ['turbo', 'bits', 'premium'], OTHER_KNOWN = ['turbo', 'bits', 'premium', 'partner'],
CSS_BADGES = { CSS_BADGES = {
staff: { 1: { color: "#200f33", use_svg: true } }, staff: { 1: { color: "#200f33", use_svg: true } },
@ -12,6 +12,7 @@ var FFZ = window.FrankerFaceZ,
broadcaster: { 1: { color: "#e71818", use_svg: true } }, broadcaster: { 1: { color: "#e71818", use_svg: true } },
moderator: { 1: { color: "#34ae0a", use_svg: true } }, moderator: { 1: { color: "#34ae0a", use_svg: true } },
twitchbot: { 1: { color: "#34ae0a" } }, twitchbot: { 1: { color: "#34ae0a" } },
partner: { 1: { color: "transparent", has_trans: true, trans_color: "#6441a5" } },
turbo: { 1: { color: "#6441a5", use_svg: true } }, turbo: { 1: { color: "#6441a5", use_svg: true } },
premium: { 1: { color: "#009cdc" } }, premium: { 1: { color: "#009cdc" } },
@ -271,7 +272,8 @@ FFZ.settings_info.transparent_badges = {
this.toggle_style('badges-blank', val === 3 || val === 4); this.toggle_style('badges-blank', val === 3 || val === 4);
this.toggle_style('badges-circular-small', val === 4); this.toggle_style('badges-circular-small', val === 4);
this.toggle_style('badges-transparent', val >= 5); this.toggle_style('badges-transparent', val >= 5);
document.body.classList.toggle('ffz-transparent-badges', val >= 5); utils.toggle_cls('ffz-transparent-badges')(val >= 5);
utils.toggle_cls('ffz-blank-badges')(val === 3 || val === 4);
// Update existing chat lines. // Update existing chat lines.
var CL = utils.ember_resolve('component:chat/chat-line'), var CL = utils.ember_resolve('component:chat/chat-line'),
@ -311,6 +313,7 @@ FFZ.prototype.setup_badges = function() {
this.toggle_style('badges-transparent', val >= 5); this.toggle_style('badges-transparent', val >= 5);
utils.toggle_cls('ffz-transparent-badges')(val >= 5); utils.toggle_cls('ffz-transparent-badges')(val >= 5);
utils.toggle_cls('ffz-blank-badges')(val === 3 || val === 4);
utils.toggle_cls('ffz-no-loyalty')(!this.settings.loyalty_badges); utils.toggle_cls('ffz-no-loyalty')(!this.settings.loyalty_badges);
} }

View file

@ -783,7 +783,7 @@ FFZ.prototype.modify_chat_input = function(component) {
room_id = room && room.get('id'), room_id = room && room.get('id'),
tmi = in_conversation ? window.TMI && TMI._sessions && TMI._sessions[0] : room && room.tmiSession, tmi = in_conversation ? window.TMI && TMI._sessions && TMI._sessions[0] : room && room.tmiSession,
set_name, replacement, url, is_sub_set, fav_list, set_name, replacement, url, is_inventory, is_sub_set, fav_list,
emote_set, emote, emote_id, code, sort_factor, is_fav, emote_set, emote, emote_id, code, sort_factor, is_fav,
prefix_length, per_pref, prefix_length, per_pref,
@ -801,13 +801,17 @@ FFZ.prototype.modify_chat_input = function(component) {
if ( es && es.emoticon_sets ) { if ( es && es.emoticon_sets ) {
for(var set_id in es.emoticon_sets) { for(var set_id in es.emoticon_sets) {
emote_set = es.emoticon_sets[set_id]; emote_set = es.emoticon_sets[set_id];
fav_list = f.settings.favorite_emotes['twitch-' + set_id] || []; is_inventory = f._twitch_inventory_sets.indexOf(set_id) !== -1;
fav_list = f.settings.favorite_emotes['twitch-' + (is_inventory ? 'inventory' : set_id)] || [];
is_sub_set = false; is_sub_set = false;
set_name = f._twitch_set_to_channel[set_id]; set_name = f._twitch_set_to_channel[set_id];
if ( ! emote_set ) if ( ! emote_set )
continue; continue;
if ( set_name ) { if ( is_inventory )
set_name = 'Twitch Inventory';
else if ( set_name ) {
if ( set_name === '--global--' ) if ( set_name === '--global--' )
set_name = 'Twitch Global'; set_name = 'Twitch Global';
else if ( set_name === '--twitch-turbo--' || set_name === 'turbo' || set_name === '--turbo-faces--' ) else if ( set_name === '--twitch-turbo--' || set_name === 'turbo' || set_name === '--turbo-faces--' )
@ -826,7 +830,7 @@ FFZ.prototype.modify_chat_input = function(component) {
continue; continue;
prefix_length = f.settings.input_complete_without_prefix && is_sub_set ? utils.find_common_prefix(_.pluck(emote_set, 'code'), true) : 0; prefix_length = f.settings.input_complete_without_prefix && is_sub_set ? utils.find_common_prefix(_.pluck(emote_set, 'code'), true) : 0;
sort_factor = is_sub_set ? 1 : 9; sort_factor = is_sub_set ? 1 : is_inventory ? 8 : 9;
for(var i = 0; i < emote_set.length; i++) { for(var i = 0; i < emote_set.length; i++) {
emote = emote_set[i]; emote = emote_set[i];

View file

@ -1485,11 +1485,17 @@ FFZ.prototype.modify_moderation_card = function(component) {
room_id = Chat && Chat.get('currentRoom.id'), room_id = Chat && Chat.get('currentRoom.id'),
user_id = this.get('cardInfo.user.id'), user_id = this.get('cardInfo.user.id'),
ffz_room = f.rooms && f.rooms[room_id], ffz_room = f.rooms && f.rooms[room_id],
chat_history = ffz_room && ffz_room.user_history && ffz_room.user_history[user_id] || [], chat_history = ffz_room && ffz_room.user_history ? (ffz_room.user_history[user_id] || []) : null,
el = this.get('element'), el = this.get('element'),
history = el.querySelector('.chat-history.live-history'); history = el.querySelector('.chat-history.live-history');
if ( chat_history === null ) {
if ( history )
jQuery(history).remove();
return;
}
if ( ! history ) { if ( ! history ) {
history = utils.createElement('ul', 'moderation-card__actions chat-history live-history'); history = utils.createElement('ul', 'moderation-card__actions chat-history live-history');
el.appendChild(history); el.appendChild(history);

View file

@ -221,10 +221,13 @@ FFZ.settings_info.top_nav_color = {
var out = '.top-nav__menu,.top-nav__drawer-anchor,.top-nav__logo{background-color:' + val + '}'; var out = '.top-nav__menu,.top-nav__drawer-anchor,.top-nav__logo{background-color:' + val + '}';
if ( color.luminance() > 0.2 ) { if ( color.luminance() > 0.2 ) {
out += '.top-nav .notification-center__icon svg,.top-nav .prime-logo-crown.prime-logo-crown--white svg,.top-nav__logo svg path, .top-nav__overflow svg path{fill: #000}' + out += '.top-nav__search .form__icon svg,.top-nav .notification-center__icon svg,.top-nav .prime-logo-crown.prime-logo-crown--white svg,.top-nav__logo svg path, .top-nav__overflow svg path{fill: #000}' +
'.top-nav__user-card:after{border-top-color:#000}' + '.top-nav__user-card:after{border-top-color:#000}' +
'.top-nav__user-status,.top-nav__nav-link{color: #111}' + '.top-nav__nav-link .pill{background-color:rgba(0,0,0,0.2)}' +
'.top-nav #user_display_name,.top-nav__nav-link:hover{color: #000}'; '.top-nav__user-status,.ffz-dark .top-nav__nav-link,.top-nav__nav-link{color: #111!important}' +
'.top-nav__nav-link .ffz-follow-count,.top-nav #user_display_name,.ffz-dark .top-nav__nav-link:hover,.top-nav__nav-link:hover{color: #000!important}' +
'.ffz-dark .top-nav__search .form__input[type=text],.top-nav__search .form__input[type=text]{color:#000;background-color:rgba(0,0,0,0.05);box-shadow:rgba(0,0,0,0.2) 0 0 0 1px inset}' +
'.ffz-dark .top-nav__search .form__input[type=text]:focus,.top-nav__search .form__input[type=text]:focus{box-shadow:rgba(0,0,0,0.4) 0 0 0 1px inset}';
} else } else
out += '.top-nav__nav-link{color: #d7d7d7}'; out += '.top-nav__nav-link{color: #d7d7d7}';

View file

@ -78,6 +78,43 @@ FFZ.prototype.setup_emoticons = function() {
this.log("Watching Twitch emoticon parser to ensure it loads."); this.log("Watching Twitch emoticon parser to ensure it loads.");
this._twitch_emote_check = setTimeout(this.check_twitch_emotes.bind(this), 10000); this._twitch_emote_check = setTimeout(this.check_twitch_emotes.bind(this), 10000);
this._twitch_inventory_sets = [];
this.refresh_twitch_inventory();
}
FFZ.prototype.refresh_twitch_inventory = function() {
var f = this;
return new Promise(function(succeed) {
var o = [],
user = f.get_user();
if ( ! user ) {
f._twitch_inventory_sets = o;
return succeed(o);
}
utils.api.get("/v5/inventory/emoticons", null, {version: 5}, user.chat_oauth_token)
.done(function(data) {
o = Object.keys(data.emoticon_sets || {});
for(var i=0; i < o.length; i++) {
var set_id = o[i],
emotes = data.emoticon_sets[set_id];
for(var j=0; j < emotes.length; j++)
f._twitch_emote_to_set[emotes[j].id] = set_id;
}
f._twitch_inventory_sets = o;
return succeed(o);
}).fail(function() {
f._twitch_inventory_sets = o;
return succeed(o);
});
});
} }
@ -121,7 +158,7 @@ FFZ.prototype._click_emote = function(target, event) {
if ( ! target || ! target.classList.contains('emoticon') ) if ( ! target || ! target.classList.contains('emoticon') )
return; return;
if ( event && ((!IS_OSX && event.ctrlKey) || (IS_OSX && event.metaKey)) ) { if ( event && ! event.shiftKey && ! event.shiftLeft && ((!IS_OSX && event.ctrlKey) || (IS_OSX && event.metaKey)) ) {
var eid, favorite_key; var eid, favorite_key;
if ( target.classList.contains('emoji') ) { if ( target.classList.contains('emoji') ) {
@ -139,27 +176,21 @@ FFZ.prototype._click_emote = function(target, event) {
if ( eid ) { if ( eid ) {
eid = parseInt(eid); eid = parseInt(eid);
var twitch_set = this._twitch_emote_to_set[eid]; var twitch_set = this._twitch_emote_to_set[eid];
if ( twitch_set ) { if ( twitch_set )
var Chat = utils.ember_lookup('controller:chat'), if ( this._twitch_inventory_sets.indexOf(twitch_set) !== -1 )
tmi = Chat && Chat.get('currentRoom.tmiSession'), favorite_key = 'twitch-inventory';
twitch_sets = (tmi && tmi.getEmotes() || {'emoticon_sets': {}})['emoticon_sets']; else
favorite_key = 'twitch-' + twitch_set;
if ( twitch_sets[twitch_set] ) {
var set = twitch_sets[twitch_set];
if ( set.length === 1 && ! this._twitch_set_to_channel[twitch_set] )
favorite_key = 'twitch-inventory';
else
favorite_key = 'twitch-' + twitch_set;
}
}
} else { } else {
eid = parseInt(target.getAttribute('data-ffz-emote')); eid = target.getAttribute('data-ffz-emote');
var set_id = target.getAttribute('data-ffz-set'), var set_id = target.getAttribute('data-ffz-set'),
emote_set = set_id && this.emote_sets[set_id]; emote_set = set_id && this.emote_sets[set_id];
if ( emote_set && emote_set.emoticons && emote_set.emoticons[eid] ) if ( emote_set && emote_set.emoticons && emote_set.emoticons[eid] ) {
favorite_key = 'ffz-' + (emote_set.hasOwnProperty('source_ext') ? 'ext-' + emote_set.source_ext + '-' + set.source_id : set_id); favorite_key = 'ffz-' + (emote_set.hasOwnProperty('source_ext') ? 'ext-' + emote_set.source_ext + '-' + emote_set.source_id : set_id);
eid = emote_set.emoticons[eid].id || eid;
}
} }
} }
@ -174,6 +205,7 @@ FFZ.prototype._click_emote = function(target, event) {
this.settings.set("favorite_emotes", this.settings.favorite_emotes, true); this.settings.set("favorite_emotes", this.settings.favorite_emotes, true);
jQuery(target).trigger('mouseout').trigger('mouseover'); jQuery(target).trigger('mouseout').trigger('mouseover');
this._inputv && this._inputv.propertyDidChange('ffz_emoticons');
} }
return true; return true;

View file

@ -61,7 +61,7 @@ FFZ.channel_metadata = {};
// Version // Version
var VER = FFZ.version_info = { var VER = FFZ.version_info = {
major: 3, minor: 5, revision: 471, major: 3, minor: 5, revision: 472,
toString: function() { toString: function() {
return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || ""); return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || "");
} }

View file

@ -483,17 +483,10 @@ FFZ.prototype.render_tooltip = function(el) {
emote_set = set_id && f._twitch_set_to_channel[set_id]; emote_set = set_id && f._twitch_set_to_channel[set_id];
var set_type = "Channel", var set_type = "Channel",
favorite_key = 'twitch-' + set_id, favorite_key = 'twitch-' + set_id;
Chat = utils.ember_lookup('controller:chat'), if ( f._twitch_inventory_sets.indexOf(set_id) !== -1 )
tmi = Chat && Chat.get('currentRoom.tmiSession'), favorite_key = 'twitch-inventory';
twitch_sets = (tmi && tmi.getEmotes() || {'emoticon_sets': {}})['emoticon_sets'];
if ( ! emote_set && twitch_sets[set_id] ) {
var set = twitch_sets[set_id];
if ( set.length === 1 )
favorite_key = 'twitch-inventory';
}
var favorites = set_id && f.settings.favorite_emotes[favorite_key] || [], var favorites = set_id && f.settings.favorite_emotes[favorite_key] || [],
is_favorite = ! can_favorite && favorites.indexOf(parseInt(emote_id)) !== -1; is_favorite = ! can_favorite && favorites.indexOf(parseInt(emote_id)) !== -1;
@ -514,10 +507,12 @@ FFZ.prototype.render_tooltip = function(el) {
set_type = null; set_type = null;
} }
if ( this.classList.contains('ffz-tooltip-no-credit') ) var no_credit = this.classList.contains('ffz-tooltip-no-credit'),
return (is_favorite ? FAV_MARKER : '') + image + utils.sanitize(this.alt) + mod_text; no_set = ! emote_set || no_credit;
else
return (is_favorite ? FAV_MARKER : '') + image + 'Emoticon: ' + utils.sanitize(this.alt) + '<br>' + (set_type ? set_type + ': ' : '') + emote_set + mod_text; return (is_favorite ? FAV_MARKER : '') + image + (no_credit ? '' : 'Emoticon: ') +
utils.sanitize(this.alt) + (no_set ? '' : '<br>' + (set_type ? set_type + ': ' : '') + emote_set) +
mod_text;
//return `${image}Emoticon: ${this.alt}<br>${set_type ? set_type + ": " : ""}${emote_set}`; //return `${image}Emoticon: ${this.alt}<br>${set_type ? set_type + ": " : ""}${emote_set}`;
} }

View file

@ -757,6 +757,7 @@ FFZ.prototype._add_emote = function(view, emote, favorites_set, favorites_key, e
favs.push(favorites_key); favs.push(favorites_key);
this.settings.set("favorite_emotes", this.settings.favorite_emotes, true); this.settings.set("favorite_emotes", this.settings.favorite_emotes, true);
this._inputv && this._inputv.propertyDidChange('ffz_emoticons');
if ( el.classList.contains('ffz-is-favorite') && is_favorited ) { if ( el.classList.contains('ffz-is-favorite') && is_favorited ) {
jQuery(el).trigger('mouseout'); jQuery(el).trigger('mouseout');

View file

@ -213,16 +213,18 @@ FFZ.menu_pages.myemotes = {
if ( ! set.length ) if ( ! set.length )
continue; continue;
var raw_id = this._twitch_set_to_channel[set_id], if ( this._twitch_inventory_sets.indexOf(set_id) !== -1 ) {
menu_id = raw_id ? raw_id.toLowerCase() : 'unknown'; for(var i=0; i < set.length; i++)
if ( ! favorites_only || gathered_favorites.indexOf(set[i].id) !== -1 )
gathered_emotes.push(set[i]);
if ( set.length === 1 && ! raw_id ) {
if ( ! favorites_only || gathered_favorites.indexOf(set[0].id) !== -1 )
gathered_emotes.push(set[0]);
continue; continue;
} }
var favorites_list = this.settings.favorite_emotes["twitch-" + set_id]; var raw_id = this._twitch_set_to_channel[set_id],
menu_id = raw_id ? raw_id.toLowerCase() : 'unknown',
favorites_list = this.settings.favorite_emotes["twitch-" + set_id];
if ( favorites_only && (! favorites_list || ! favorites_list.length) ) if ( favorites_only && (! favorites_list || ! favorites_list.length) )
continue; continue;

View file

@ -1185,28 +1185,47 @@ module.exports = FFZ.utils = {
}, },
cdn_badge_css: function(badge_id, version, data, room) { cdn_badge_css: function(badge_id, version, data, room) {
var color = data.color, var color = data.color || 'transparent',
base_image = data.image || ("https://cdn.frankerfacez.com/badges/twitch/" + badge_id + (data.use_svg ? '.svg' : "/" + version + "/")), ht = data.has_trans,
is_svg = base_image.substr(-4) === '.svg', trans_color = data.trans_color || color,
image_1x = base_image + (is_svg ? '' : "1.png"),
image_2x = base_image + (is_svg ? '' : "2.png"),
image_4x = base_image + (is_svg ? '' : "4.png"),
image_set = image = 'url("' + image_1x + '")'; base_image = data.image || ("https://cdn.frankerfacez.com/badges/twitch/" + badge_id + (data.use_svg ? '.svg' : "/" + version + "/")),
base_trans = ht ? (data.trans_image || ("https://cdn.frankerfacez.com/badges/twitch/" + badge_id + (data.trans_svg ? '.svg' : '/' + version + '/'))) : base_image,
is_svg = base_image.substr(-4) === '.svg',
trans_svg = base_trans.substr(-4) === '.svg',
image_set = image = 'url("' + base_image + (is_svg ? '' : "1.png") + '")',
trans_set = trans = 'url("' + base_trans + (trans_svg ? '' : '1_trans.png') + '")',
selector = '.badge.' + badge_id + '.version-' + version + (room ? '[data-room="' + room + '"]' : '');
if ( ! is_svg ) if ( ! is_svg )
image_set = WEBKIT + 'image-set(' + image + image_set = WEBKIT + 'image-set(' + image +
' 1x, url("' + image_2x + '") 2x, url("' + image_4x + '") 4x)'; ' 1x, url("' + base_image + (is_svg ? '' : '2.png') +
'") 2x, url("' + base_image + (is_svg ? '' : '4.png') + '") 4x)';
return '.badge.' + badge_id + '.version-' + version + (room ? '[data-room="' + room + '"]' : '') + (data.no_color ? '' : ':not(.colored)') + '{' + if ( ! trans_svg )
trans_set = WEBKIT + 'image-set(' + trans +
' 1x, url("' + base_trans + (trans_svg ? '' : '2_trans.png') +
'") 2x, url("' + base_trans + (trans_svg ? '' : '4_trans.png') + '") 4x)';
return selector + (data.no_color ? '' : ':not(.colored)') + '{' +
'background:' + image + ' ' + color + ';' + 'background:' + image + ' ' + color + ';' +
(is_svg ? '}' : 'background-image:' + image_set + '}' ) + (is_svg ? '}' : 'background-image:' + image_set + '}' ) +
(data.no_color ? '' : '.badge.' + badge_id + '.version-' + version + (room ? '[data-room="' + room + '"]' : '') + '.colored{' + (ht ? '.ffz-transparent-badges ' + selector + '{' +
'background: linear-gradient(' + color + ',' + color + ');' + 'background:' + trans + ';' +
(trans_svg ? '}' : 'background-image:' + trans_set + '}') : '') +
(color === 'transparent' && ht ? '.ffz-blank-badges ' + selector + '{' +
'background:' + trans_color + '}' : '') +
(data.no_color ? '' : selector + '.colored{' +
'background: linear-gradient(' + (ht ? trans_color + ',' + trans_color : color + ',' + color) + ');' +
(is_svg ? WEBKIT + 'mask-size:18px 18px;' : '') + (is_svg ? WEBKIT + 'mask-size:18px 18px;' : '') +
WEBKIT + 'mask-image:' + image + ';' + WEBKIT + 'mask-image:' + (ht ? trans : image) + ';' +
(is_svg ? '}' : WEBKIT + 'mask-image:' + image_set + '}') ((ht ? trans_svg : is_svg) ? '}' : WEBKIT + 'mask-image:' + (ht ? trans_set : image_set) + '}')
); );
}, },

View file

@ -4132,4 +4132,38 @@ body.ffz-sidebar-swap .app-main.theatre #main_col:not(.expandRight) #player[data
} }
.itad-balloon table th:not(:first-child), .itad-balloon table th:not(:first-child),
.itad-balloon table td:not(:first-child) { text-align: right } .itad-balloon table td:not(:first-child) { text-align: right }
/*
H O T * G A R B A G E
___/-\___ ___/-\___ ___/-\___
|---------| |---------| |---------|
| | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | | | |
|_______| |_______| |_______|
*/
#ffz-chat-menu.ui-draggable-dragging {
height: auto !important;
width: auto !important;
background: transparent;
border: none;
padding: 0;
display: block;
max-width: inherit;
}
.moderation-card.ui-draggable-dragging {
position: fixed;
height: auto !important;
width: auto !important;
background: black;
padding: 0;
display: block;
max-width: 340px;
}