1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-06-28 23:37:41 +00:00
FrankerFaceZ/script.min.js

2 lines
57 KiB
JavaScript
Raw Normal View History

!function(e){!function t(e,n,i){function o(r,a){if(!n[r]){if(!e[r]){var c="function"==typeof require&&require;if(!a&&c)return c(r,!0);if(s)return s(r,!0);throw new Error("Cannot find module '"+r+"'")}var l=n[r]={exports:{}};e[r][0].call(l.exports,function(t){var n=e[r][1][t];return o(n?n:t)},l,l.exports,t,e,n,i)}return n[r].exports}for(var s="function"==typeof require&&require,r=0;r<i.length;r++)o(i[r]);return o}({1:[function(t){var n=e.FrankerFaceZ,i=t("./constants"),o=t("./utils");n.prototype.setup_badges=function(){this.log("Preparing badge system."),this.badges={},this.log("Creating badge style element.");var e=this._badge_style=document.createElement("style");e.id="ffz-badge-css",document.head.appendChild(e),this.log("Adding legacy donor badges."),this._legacy_add_donors()};var s=function(e){return".badges .ffz-badge-"+e.id+" { background-color: "+e.color+'; background-image: url("'+e.image+'"); '+(e.extra_css||"")+"}"};n.prototype.bttv_badges=function(e){var t=e.sender,n=this.users[t],i=[],o=-1;if(n&&n.badges){for(var s=0;s<e.badges.length;s++){var r=e.badges[s];if("subscriber"==r.type||"turbo"==r.type){o=s;break}}for(var a in n.badges)if(n.badges.hasOwnProperty(a)){var r=n.badges[a],c=this.badges[r.id]||{},l=r.title||c.title,d="",u=BetterTTV.settings.get("alphaTags");r.image&&(d+='background-image: url(\\"'+r.image+'\\"); '),r.color&&!u&&(d+="background-color: "+r.color+"; "),r.extra_css&&(d+=r.extra_css),d&&(l+='" style="'+d),i.push([(-1==o?1:-1)*a,{type:"ffz-badge-"+r.id+(u?" alpha":""),name:"",description:l}])}if(i.sort(function(e,t){return e[0]-t[0]}),-1==o)for(;i.length;)e.badges.push(i.shift()[1]);else for(;i.length;)e.badges.insertAt(o,i.shift()[1])}},n.prototype.render_badge=function(e){var t=e.get("context.model.from"),n=(e.get("context.parentController.content.id"),e.$(".badges")),i=this.users[t];if(i&&i.badges){var o=n.find(".badge").filter(function(){var e=this.title.toLowerCase();return"subscriber"==e||"turbo"==e}).first(),s=[],r=!!o.length;for(var a in i.badges)if(i.badges.hasOwnProperty(a)){var c=i.badges[a],l=this.badges[c.id]||{},d=document.createElement("div");d.className="badge float-left tooltip ffz-badge-"+c.id,d.setAttribute("title",c.title||l.title),c.image&&(d.style.backgroundImage='url("'+c.image+'")'),c.color&&(d.style.backgroundColor=c.color),c.extra_css&&(d.style.cssText+=c.extra_css),s.push([(r?1:-1)*a,d])}if(s.sort(function(e,t){return e[0]-t[0]}),r)for(;s.length;)o.before(s.shift()[1]);else for(;s.length;)n.append(s.shift()[1])}},n.prototype._legacy_add_donors=function(e){this.badges[1]={id:1,title:"FFZ Donor",color:"#755000",image:"//cdn.frankerfacez.com/channel/global/donoricon.png"},o.update_css(this._badge_style,1,s(this.badges[1])),this.badges[0]={id:0,title:"FFZ Developer",color:"#FAAF19",image:"//cdn.frankerfacez.com/channel/global/devicon.png"},o.update_css(this._badge_style,0,s(this.badges[0])),this.users.sirstendec={badges:{0:{id:0}}},jQuery.ajax(i.SERVER+"script/donors.txt",{cache:!1,context:this}).done(function(e){this._legacy_parse_donors(e)}).fail(function(t){return 404!=t.status?(e=(e||0)+1,10>e?this._legacy_add_donors(e):void 0):void 0})},n.prototype._legacy_parse_donors=function(e){var t=0;if(null!=e)for(var n=e.trim().split(/\W+/),i=0;i<n.length;i++){var s=n[i],r=this.users[s]=this.users[s]||{},a=r.badges=r.badges||{};a[0]||(a[0]={id:1},t+=1)}this.log("Added donor badge to "+o.number_commas(t)+" users.")}},{"./constants":3,"./utils":24}],2:[function(){var t=e.FrankerFaceZ;t.ffz_commands.log=function(e){this._pastebin(this._log_data.join("\n"),function(t){return t?void this.room_message(e,"Your FrankerFaceZ log has been pasted to: "+t):this.room_message(e,"There was an error uploading the FrankerFaceZ log.")})},t.ffz_commands.massunmod=function(e,t){if(t=t.join(" ").trim(),!t.length)return"You must provide a list of users to unmod.";t=t.split(/\W*,\W*/);var n=this.get_user();if(!n||!n.login==e.id)return"You must be the broadcaster to use massunmod.";if(t.length>50)return"Each user you unmod counts as a single message. To avoid being globally banned, please limit you
},t.prototype.setup_emote_menu=function(e){this.log("Emote Menu for Twitch was detected after "+e+"ms. Registering emote enumerator."),emoteMenu.registerEmoteGetter("FrankerFaceZ",this._emote_menu_enumerator.bind(this))},t.prototype._emote_menu_enumerator=function(){for(var e=this.get_user(),n=e?e.login:null,i=App.__container__.lookup("controller:chat"),o=i?i.get("currentRoom.id"):null,s=this.getEmotes(n,o),r=[],a=0;a<s.length;a++){var c=this.emote_sets[s[a]];if(c&&c.emotes)for(var l in c.emotes)if(c.emotes.hasOwnProperty(l)){var d=c.emotes[l];if(!d.hidden){var u=c.title,h=c.icon||null;u||(u="global"==c.id?"FrankerFaceZ Global Emotes":"globalevent"==c.id?"FrankerFaceZ Event Emotes":this.feature_friday&&c.id==this.feature_friday.set?"FrankerFaceZ Feature Friday: "+this.feature_friday.channel:"FrankerFaceZ Set: "+t.get_capitalization(c.id)),r.push({text:d.name,url:d.url,hidden:!1,channel:u,badge:h})}}}return r}},{}],13:[function(t){t("./shims");var n=e.FrankerFaceZ=function(){n.instance=this,this._log_data=[],this.initialize()};n.get=function(){return n.instance};var i=n.version_info={major:3,minor:1,revision:0,toString:function(){return[i.major,i.minor,i.revision].join(".")+(i.extra||"")}};n.prototype.log=function(e,t,n){e="FFZ: "+e+(n?" -- "+JSON.stringify(t):""),this._log_data.push(e),void 0!==t&&console.groupCollapsed&&console.dir?(console.groupCollapsed(e),-1!==navigator.userAgent.indexOf("Firefox/")?console.log(t):console.dir(t),console.groupEnd(e)):console.log(e)},n.prototype.error=function(e,t,n){e="FFZ Error: "+e+(n?" -- "+JSON.stringify(t):""),this._log_data.push(e),void 0!==t&&console.groupCollapsed&&console.dir?(console.groupCollapsed(e),-1!==navigator.userAgent.indexOf("Firefox/")?console.log(t):console.dir(t),console.groupEnd(e)):console.assert(!1,e)},n.prototype.paste_logs=function(){this._pastebin(this._log_data.join("\n"),function(e){return e?void console.log("FFZ: Your FrankerFaceZ log has been pasted to: "+e):console.log("FFZ Error: Unable to upload log to pastebin.")})},n.prototype._pastebin=function(e,t){jQuery.ajax({url:"http://putco.de/",type:"PUT",data:e,context:this}).success(function(e){t.bind(this)(e.trim()+".log")}).fail(function(){t.bind(this)(null)})},n.prototype.get_user=function(){if(e.PP&&PP.login)return PP;if(e.App){var t=App.__container__.lookup("controller:navigation");return t?t.get("userData"):void 0}},t("./settings"),t("./socket"),t("./emoticons"),t("./badges"),t("./ember/room"),t("./ember/line"),t("./ember/chatview"),t("./ember/viewers"),t("./ember/moderation-card"),t("./debug"),t("./ext/betterttv"),t("./ext/emote_menu"),t("./featurefriday"),t("./ui/styles"),t("./ui/notifications"),t("./ui/viewer_count"),t("./ui/menu_button"),t("./ui/menu"),t("./ui/races"),t("./commands"),n.prototype.initialize=function(t,n){var i=void 0!=e.App&&void 0!=App.__container__&&void 0!=App.__container__.resolve("model:room");return i?void this.setup_ember(n):(t=t||10,void(n>=6e4?this.log('Twitch application not detected in "'+location.toString()+'". Aborting.'):setTimeout(this.initialize.bind(this,t,(n||0)+t),t)))},n.prototype.setup_ember=function(t){var i=e.performance&&performance.now?performance.now():Date.now();this.log("Found Twitch application after "+(t||0)+' ms in "'+location+'". Initializing FrankerFaceZ version '+n.version_info),this.users={},this.load_settings(),this.ws_create(),this.setup_emoticons(),this.setup_badges(),this.setup_room(),this.setup_line(),this.setup_chatview(),this.setup_viewers(),this.setup_mod_card(),this.setup_notifications(),this.setup_css(),this.setup_menu(),this.setup_races(),this.find_bttv(10),this.find_emote_menu(10),this.check_ff();var o=e.performance&&performance.now?performance.now():Date.now(),s=o-i;this.log("Initialization complete in "+s+"ms")}},{"./badges":1,"./commands":2,"./debug":4,"./ember/chatview":5,"./ember/line":6,"./ember/moderation-card":7,"./ember/room":8,"./ember/viewers":9,"./emoticons":10,"./ext/betterttv":11,"./ext/emote_menu":12,"./featurefriday":14,"./settings":15,"./shims":16,"./socket":17,"./ui/menu":18,"./ui/menu_button":19,"./ui/notification