fix emotes and colored text

This commit is contained in:
Zack Rauen 2018-10-04 17:57:55 -04:00
parent 4aa7884a34
commit d22860e7c8
2 changed files with 70 additions and 65 deletions

View File

@ -388,10 +388,12 @@ Core.prototype.injectColoredText = function() {
this.cancelColoredText = Utils.monkeyPatch(BDV2.MessageContentComponent.prototype, "render", {after: (data) => { this.cancelColoredText = Utils.monkeyPatch(BDV2.MessageContentComponent.prototype, "render", {after: (data) => {
if (!settingsCookie["bda-gs-7"]) return; if (!settingsCookie["bda-gs-7"]) return;
const markup = data.returnValue.props.children[1]; Utils.monkeyPatch(data.returnValue.props, "children", {silent: true, after: ({returnValue}) => {
const roleColor = data.thisObject.props.message.colorString; const markup = returnValue.props.children[1];
if (markup && roleColor) markup.props.style = {color: roleColor}; const roleColor = data.thisObject.props.message.colorString;
return data.returnValue; if (markup && roleColor) markup.props.style = {color: roleColor};
return returnValue;
}});
}}); }});
}; };
@ -656,66 +658,68 @@ EmoteModule.prototype.init = async function () {
if (this.cancelEmoteRender) return; if (this.cancelEmoteRender) return;
this.cancelEmoteRender = Utils.monkeyPatch(BDV2.MessageContentComponent.prototype, "render", {after: ({returnValue}) => { this.cancelEmoteRender = Utils.monkeyPatch(BDV2.MessageContentComponent.prototype, "render", {after: ({returnValue}) => {
const markup = returnValue.props.children[1]; Utils.monkeyPatch(returnValue.props, "children", {silent: true, after: ({returnValue}) => {
if (!markup.props.children) return; const markup = returnValue.props.children[1];
const nodes = markup.props.children[1]; if (!markup.props.children) return;
if (!nodes || !nodes.length) return; const nodes = markup.props.children[1];
for (let n = 0; n < nodes.length; n++) { if (!nodes || !nodes.length) return;
const node = nodes[n]; for (let n = 0; n < nodes.length; n++) {
if (typeof(node) !== "string") continue; const node = nodes[n];
const words = node.split(/([^\s]+)([\s]|$)/g); if (typeof(node) !== "string") continue;
for (let c = 0, clen = this.categories.length; c < clen; c++) { const words = node.split(/([^\s]+)([\s]|$)/g);
for (let w = 0, wlen = words.length; w < wlen; w++) { for (let c = 0, clen = this.categories.length; c < clen; c++) {
let emote = words[w]; for (let w = 0, wlen = words.length; w < wlen; w++) {
let emoteSplit = emote.split(":"); let emote = words[w];
let emoteName = emoteSplit[0]; let emoteSplit = emote.split(":");
let emoteModifier = emoteSplit[1] ? emoteSplit[1] : ""; let emoteName = emoteSplit[0];
let emoteOverride = emoteModifier.slice(0); let emoteModifier = emoteSplit[1] ? emoteSplit[1] : "";
let emoteOverride = emoteModifier.slice(0);
if (bemotes.includes(emoteName) || emoteName.length < 4) continue;
if (!this.modifiers.includes(emoteModifier) || !settingsCookie["bda-es-8"]) emoteModifier = ""; if (bemotes.includes(emoteName) || emoteName.length < 4) continue;
if (!this.overrides.includes(emoteOverride)) emoteOverride = ""; if (!this.modifiers.includes(emoteModifier) || !settingsCookie["bda-es-8"]) emoteModifier = "";
else emoteModifier = emoteOverride; if (!this.overrides.includes(emoteOverride)) emoteOverride = "";
else emoteModifier = emoteOverride;
let current = this.categories[c];
if (emoteOverride === "twitch") { let current = this.categories[c];
if (window.bdEmotes.TwitchGlobal[emoteName]) current = "TwitchGlobal"; if (emoteOverride === "twitch") {
else if (window.bdEmotes.TwitchSubscriber[emoteName]) current = "TwitchSubscriber"; if (window.bdEmotes.TwitchGlobal[emoteName]) current = "TwitchGlobal";
} else if (window.bdEmotes.TwitchSubscriber[emoteName]) current = "TwitchSubscriber";
else if (emoteOverride === "bttv") { }
if (window.bdEmotes.BTTV[emoteName]) current = "BTTV"; else if (emoteOverride === "bttv") {
else if (window.bdEmotes.BTTV2[emoteName]) current = "BTTV2"; if (window.bdEmotes.BTTV[emoteName]) current = "BTTV";
} else if (window.bdEmotes.BTTV2[emoteName]) current = "BTTV2";
else if (emoteOverride === "ffz") { }
if (window.bdEmotes.FrankerFaceZ[emoteName]) current = "FrankerFaceZ"; else if (emoteOverride === "ffz") {
} if (window.bdEmotes.FrankerFaceZ[emoteName]) current = "FrankerFaceZ";
}
if (!window.bdEmotes[current][emoteName] || !settingsCookie[window.bdEmoteSettingIDs[current]]) continue;
const results = nodes[n].match(new RegExp(`([\\s]|^)${utils.escape(emoteModifier ? emoteName + ":" + emoteModifier : emoteName)}([\\s]|$)`)); if (!window.bdEmotes[current][emoteName] || !settingsCookie[window.bdEmoteSettingIDs[current]]) continue;
if (!results) continue; const results = nodes[n].match(new RegExp(`([\\s]|^)${utils.escape(emoteModifier ? emoteName + ":" + emoteModifier : emoteName)}([\\s]|$)`));
const pre = nodes[n].substring(0, results.index + results[1].length); if (!results) continue;
const post = nodes[n].substring(results.index + results[0].length - results[2].length); const pre = nodes[n].substring(0, results.index + results[1].length);
nodes[n] = pre; const post = nodes[n].substring(results.index + results[0].length - results[2].length);
const emoteComponent = BDV2.react.createElement(BDEmote, {name: emoteName, url: window.bdEmotes[current][emoteName], modifier: emoteModifier}); nodes[n] = pre;
nodes.splice(n + 1, 0, post); const emoteComponent = BDV2.react.createElement(BDEmote, {name: emoteName, url: window.bdEmotes[current][emoteName], modifier: emoteModifier});
nodes.splice(n + 1, 0, emoteComponent); nodes.splice(n + 1, 0, post);
n = n + 2; nodes.splice(n + 1, 0, emoteComponent);
} n = n + 2;
} }
} }
const onlyEmotes = nodes.every(r => { }
if (typeof(r) == "string" && r.replace(/\s*/, "") == "") return true; const onlyEmotes = nodes.every(r => {
else if (r.type && r.type.name == "BDEmote") return true; if (typeof(r) == "string" && r.replace(/\s*/, "") == "") return true;
else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true; else if (r.type && r.type.name == "BDEmote") return true;
return false; else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true;
}); return false;
if (!onlyEmotes) return; });
if (!onlyEmotes) return;
for (let node of nodes) { for (let node of nodes) {
if (typeof(node) != "object") continue; if (typeof(node) != "object") continue;
if (node.type.name == "BDEmote") node.props.jumboable = true; if (node.type.name == "BDEmote") node.props.jumboable = true;
else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true; else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true;
} }
}});
}}); }});
}; };
@ -1709,6 +1713,7 @@ devMode.prototype.getSelector = function(element) {
$(document).off("contextmenu.bdDevModeCtx"); $(document).off("contextmenu.bdDevModeCtx");
}; };
var ClassNormalizer = class ClassNormalizer { var ClassNormalizer = class ClassNormalizer {
constructor() { constructor() {
this.classFormat = new RegExp(`^(?!da-)[A-Za-z]+-([A-Za-z]|[0-9]|-|_){6}$`); this.classFormat = new RegExp(`^(?!da-)[A-Za-z]+-([A-Za-z]|[0-9]|-|_){6}$`);

4
js/main.min.js vendored

File diff suppressed because one or more lines are too long