mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-06-29 23:58:31 +00:00
Refactored colors. Fixed scrolling on mobile. Added image preview on hover.
This commit is contained in:
parent
2bc2b7003b
commit
02b0a95bd0
22 changed files with 2121 additions and 425 deletions
|
@ -8,15 +8,12 @@ var FFZ = window.FrankerFaceZ,
|
|||
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
|
||||
},
|
||||
|
||||
LINK = /(?:https?:\/\/)?(?:[-a-zA-Z0-9@:%_\+~#=]+\.)+[a-z]{2,6}\b(?:[-a-zA-Z0-9@:%_\+.~#!?&//=]*)/g,
|
||||
|
||||
SEPARATORS = "[\\s`~<>!-#%-\\x2A,-/:;\\x3F@\\x5B-\\x5D_\\x7B}\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]",
|
||||
SPLITTER = new RegExp(SEPARATORS + "*," + SEPARATORS + "*");
|
||||
|
||||
|
||||
try {
|
||||
helpers = window.require && window.require("ember-twitch-chat/helpers/chat-line-helpers");
|
||||
} catch(err) { }
|
||||
|
||||
|
||||
FFZ.SRC_IDS = {},
|
||||
FFZ.src_to_id = function(src) {
|
||||
if ( FFZ.SRC_IDS.hasOwnProperty(src) )
|
||||
|
@ -34,7 +31,7 @@ FFZ.src_to_id = function(src) {
|
|||
|
||||
|
||||
// ---------------------
|
||||
// Time Format
|
||||
// Settings
|
||||
// ---------------------
|
||||
|
||||
var ts = new Date(0).toLocaleTimeString().toUpperCase();
|
||||
|
@ -51,20 +48,73 @@ FFZ.settings_info.twenty_four_timestamps = {
|
|||
};
|
||||
|
||||
|
||||
if ( helpers )
|
||||
FFZ.settings_info.show_deleted_links = {
|
||||
type: "boolean",
|
||||
value: false,
|
||||
|
||||
category: "Chat Moderation",
|
||||
no_bttv: true,
|
||||
|
||||
name: "Show Deleted Links",
|
||||
help: "Do not delete links based on room settings or link length."
|
||||
};
|
||||
|
||||
|
||||
// ---------------------
|
||||
// Setup
|
||||
// ---------------------
|
||||
|
||||
FFZ.prototype.setup_tokenization = function() {
|
||||
helpers = window.require && window.require("ember-twitch-chat/helpers/chat-line-helpers");
|
||||
if ( ! helpers )
|
||||
return this.log("Unable to get chat helper functions.");
|
||||
|
||||
this.log("Hooking Ember chat line helpers.");
|
||||
|
||||
var f = this;
|
||||
|
||||
// Timestamp Display
|
||||
helpers.getTime = function(e) {
|
||||
if ( e === undefined || e === null )
|
||||
return '?:??';
|
||||
|
||||
var hours = e.getHours(),
|
||||
minutes = e.getMinutes();
|
||||
|
||||
if ( hours > 12 && ! FFZ.get().settings.twenty_four_timestamps )
|
||||
|
||||
if ( hours > 12 && ! f.settings.twenty_four_timestamps )
|
||||
hours -= 12;
|
||||
else if ( hours === 0 && ! FFZ.get().settings.twenty_four_timestamps )
|
||||
else if ( hours === 0 && ! f.settings.twenty_four_timestamps )
|
||||
hours = 12;
|
||||
|
||||
|
||||
return hours + ':' + (minutes < 10 ? '0' : '') + minutes;
|
||||
};
|
||||
|
||||
|
||||
// Linkify Messages
|
||||
helpers.linkifyMessage = function(tokens, delete_links) {
|
||||
var show_deleted = f.settings.show_deleted_links;
|
||||
|
||||
return _.chain(tokens).map(function(token) {
|
||||
if ( ! _.isString(token) )
|
||||
return token;
|
||||
|
||||
var matches = token.match(LINK);
|
||||
if ( ! matches || ! matches.length )
|
||||
return [token];
|
||||
|
||||
return _.zip(
|
||||
token.split(LINK),
|
||||
_.map(matches, function(e) {
|
||||
if ( ! show_deleted && (delete_links || e.length > 255) )
|
||||
return {mentionedUser: '</span><a class="deleted-link" title="' + utils.quote_attr(e) + '" data-url="' + utils.quote_attr(e) + '" href="#"><' + (e.length > 255 ? 'long link' : 'deleted link') + '></a><span class="mentioning">', own: true}
|
||||
return {isLink: true, href: e};
|
||||
})
|
||||
);
|
||||
}).flatten().compact().value();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// ---------------------
|
||||
// Tokenization
|
||||
// ---------------------
|
||||
|
@ -73,6 +123,8 @@ FFZ.prototype.tokenize_chat_line = function(msgObject, prevent_notification) {
|
|||
if ( msgObject.cachedTokens )
|
||||
return msgObject.cachedTokens;
|
||||
|
||||
try {
|
||||
|
||||
var msg = msgObject.message,
|
||||
user = this.get_user(),
|
||||
room_id = msgObject.room,
|
||||
|
@ -82,11 +134,15 @@ FFZ.prototype.tokenize_chat_line = function(msgObject, prevent_notification) {
|
|||
tokens = [msg];
|
||||
|
||||
// Standard tokenization
|
||||
tokens = helpers.linkifyMessage(tokens);
|
||||
if ( user && user.login )
|
||||
if ( helpers && helpers.linkifyMessage )
|
||||
tokens = helpers.linkifyMessage(tokens);
|
||||
|
||||
if ( user && user.login && helpers && helpers.mentionizeMessage )
|
||||
tokens = helpers.mentionizeMessage(tokens, user.login, from_me);
|
||||
|
||||
tokens = helpers.emoticonizeMessage(tokens, emotes);
|
||||
if ( helpers && helpers.emoticonizeMessage )
|
||||
tokens = helpers.emoticonizeMessage(tokens, emotes);
|
||||
|
||||
if ( this.settings.replace_bad_emotes )
|
||||
tokens = this.tokenize_replace_emotes(tokens);
|
||||
|
||||
|
@ -149,7 +205,7 @@ FFZ.prototype.tokenize_chat_line = function(msgObject, prevent_notification) {
|
|||
msg,
|
||||
"Twitch Chat Whisper",
|
||||
"ffz_whisper_notice",
|
||||
60000,
|
||||
(this.settings.notification_timeout*1000),
|
||||
function() {
|
||||
window.focus();
|
||||
}
|
||||
|
@ -159,7 +215,7 @@ FFZ.prototype.tokenize_chat_line = function(msgObject, prevent_notification) {
|
|||
msg,
|
||||
"Twitch Chat Mention in " + room_name,
|
||||
room_id,
|
||||
60000,
|
||||
(this.settings.notification_timeout*1000),
|
||||
function() {
|
||||
window.focus();
|
||||
var cont = App.__container__.lookup('controller:chat');
|
||||
|
@ -174,6 +230,10 @@ FFZ.prototype.tokenize_chat_line = function(msgObject, prevent_notification) {
|
|||
}
|
||||
|
||||
msgObject.cachedTokens = tokens;
|
||||
} catch(err) {
|
||||
this.error("Tokenization Error: " + err);
|
||||
}
|
||||
|
||||
return tokens;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue