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

3 lines
75 KiB
JavaScript
Raw Normal View History

!function(e){!function t(e,n,o){function i(r,a){if(!n[r]){if(!e[r]){var l="function"==typeof require&&require;if(!a&&l)return l(r,!0);if(s)return s(r,!0);throw new Error("Cannot find module '"+r+"'")}var c=n[r]={exports:{}};e[r][0].call(c.exports,function(t){var n=e[r][1][t];return i(n?n:t)},c,c.exports,t,e,n,o)}return n[r].exports}for(var s="function"==typeof require&&require,r=0;r<o.length;r++)i(o[r]);return i}({1:[function(t){var n=e.FrankerFaceZ,o=t("./constants"),i=t("./utils");n.settings_info.bot_badges={type:"boolean",value:!0,category:"Chat",name:"Bot Badges",help:"Give special badges to known bots."},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],o=[],i=-1,s=BetterTTV.settings.get("alphaTags");if(n&&n.badges){for(var r=0;r<e.badges.length;r++){var a=e.badges[r];if("subscriber"==a.type||"turbo"==a.type){i=r;break}}for(var l in n.badges)if(n.badges.hasOwnProperty(l)){var a=n.badges[l],c=this.badges[a.id]||{},u=a.title||c.title,d="";if(void 0!==c.visible){var h=c.visible;if("function"==typeof h&&(h=h.bind(this)(null,t)),!h)continue}a.image&&(d+='background-image: url(\\"'+a.image+'\\"); '),a.color&&!s&&(d+="background-color: "+a.color+"; "),a.extra_css&&(d+=a.extra_css),d&&(u+='" style="'+d),o.push([(-1==i?1:-1)*l,{type:"ffz-badge-"+a.id+(s?" alpha":""),name:"",description:u}])}if(o.sort(function(e,t){return e[0]-t[0]}),-1==i)for(;o.length;)e.badges.push(o.shift()[1]);else for(;o.length;)e.badges.insertAt(i,o.shift()[1])}},n.prototype.render_badge=function(e){var t=e.get("context.model.from"),n=e.get("context.parentController.content.id"),o=e.$(".badges"),i=this.users[t];if(i&&i.badges){var s=o.find(".badge").filter(function(){var e=this.title.toLowerCase();return"subscriber"==e||"turbo"==e}).first(),r=[],a=!!s.length;for(var l in i.badges)if(i.badges.hasOwnProperty(l)){var c=i.badges[l],u=this.badges[c.id]||{};if(void 0!==u.visible){var d=u.visible;if("function"==typeof d&&(d=d.bind(this)(n,t)),!d)continue}if(u.replaces){var h=o[0].querySelector(".badge."+u.replaces);if(h)return h.style.backgroundImage='url("'+(c.image||u.image)+'")',void(h.title+=", "+(c.title||u.title))}var h=document.createElement("div");h.className="badge float-left tooltip ffz-badge-"+c.id,h.setAttribute("title",c.title||u.title),c.image&&(h.style.backgroundImage='url("'+c.image+'")'),c.color&&(h.style.backgroundColor=c.color),c.extra_css&&(h.style.cssText+=c.extra_css),r.push([(a?1:-1)*l,h])}if(r.sort(function(e,t){return e[0]-t[0]}),a)for(;r.length;)s.before(r.shift()[1]);else for(;r.length;)o.append(r.shift()[1])}},n.bttv_known_bots=["nightbot","moobot","sourbot","xanbot","manabot","mtgbot","ackbot","baconrobot","tardisbot","deejbot","valuebot","stahpbot"],n.known_bots=["quoteconut","quoconut","zenwan","triiharder","wobblerbot","theroflbotr","acebot"],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"},i.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"},i.update_css(this._badge_style,0,s(this.badges[0])),this.badges[2]={id:2,title:"Bot",color:"#595959",image:"//cdn.frankerfacez.com/channel/global/boticon.png",replaces:"moderator",visible:function(e,t){return this.settings.bot_badges&&!(this.has_bttv&&-1!==n.bttv_known_bots.indexOf(t))}},i.update_css(this._badge_style,2,s(this.badges[2]));for(var t=0;t<n.bttv_known_bots.length;t++)this.users[n.bttv_known_bots[t]]={badges:{0:{id:2}}};for(var t=0;t<n.known_bots.length;t++)this.users[n.known_bots[t]]={badges:{
},n.prototype._load_room_json=function(e,t,n){this.rooms[e]&&(n.room=this.rooms[e].room),this.rooms[e]=n,(n.css||n.moderator_badge)&&a.update_css(this._room_style,e,l(n)+(n.css||""));for(var o=0;o<n.sets.length;o++){var i=n.sets[o];this.emote_sets.hasOwnProperty(i)||this.load_set(i)}this.update_ui_link(),t&&t(!0,n)},n.prototype._modify_room=function(e){var t=this;e.reopen({init:function(){this._super();try{t.add_room(this.id,this)}catch(e){t.error("add_room: "+e)}},willDestroy:function(){this._super();try{t.remove_room(this.id)}catch(e){t.error("remove_room: "+e)}},getSuggestions:function(){var e=this._super();try{t.settings.capitalize&&(e=_.map(e,n.get_capitalization))}catch(o){t.error("get_suggestions: "+o)}return e},send:function(e){try{var n=e.split(" ",1)[0].toLowerCase();if("/ffz"===n)return this.set("messageToSend",""),void t.run_ffz_command(e.substr(5),this.get("id"));if("/"===n.charAt(0)&&t.run_command(e,this.get("id")))return void this.set("messageToSend","")}catch(o){t.error("send: "+o)}return this._super(e)}})},n.prototype._legacy_add_room=function(e,t,n){jQuery.ajax(r.SERVER+"channel/"+e+".css",{cache:!1,context:this}).done(function(n){this._legacy_load_room_css(e,t,n)}).fail(function(o){return 404==o.status?this._legacy_load_room_css(e,t,null):(n=n||0,n++,10>n?this._legacy_add_room(e,t,n):void 0)})},n.prototype._legacy_load_room_css=function(e,t,n){var r=e,a=r.match(s);a&&a[1]&&(r=a[1]);var l={id:e,menu_sets:[r],sets:[r],moderator_badge:null,css:null};return n&&(n=n.replace(o,"").trim()),n&&(n=n.replace(i,function(e,t){return l.moderator_badge||"modicon.png"!==t.substr(-11)?e:(l.moderator_badge=t,"")})),l.css=n||null,this._load_room_json(e,t,l)}},{"../constants":3,"../utils":27}],9:[function(){var t=e.FrankerFaceZ;t.prototype.setup_viewers=function(){this.log("Hooking the Ember Viewers controller.");var e=App.__container__.resolve("controller:viewers");this._modify_viewers(e)},t.prototype._modify_viewers=function(e){var n=this;e.reopen({lines:function(){var e=this._super();try{var o=[],i={},s=null,r=App.__container__.lookup("controller:channel"),a=this.get("parentController.model.id"),l=r&&r.get("id");if(l){var c=r.get("display_name");c&&(t.capitalization[l]=[c,Date.now()])}a!=l&&(l=null);for(var u=0;u<e.length;u++){var d=e[u];if(d.category)s=d.category,o.push(s),i[s]=[];else{var h=d.chatter.toLowerCase();if(!h)continue;h==l?(o.unshift("Broadcaster"),i.Broadcaster=[h]):i.hasOwnProperty(s)&&i[s].push(h)}}e=[];for(var u=0;u<o.length;u++){var m=o[u],_=i[m];if(_&&_.length)for(e.push({category:m}),e.push({chatter:""}),_.sort();_.length;){var h=_.shift();h=t.get_capitalization(h),e.push({chatter:h})}}}catch(p){n.error("ViewersController lines: "+p)}return e}.property("content.chatters")})}},{}],10:[function(t){var n=e.FrankerFaceZ,o=/\.([\w\-_]+)\s*?\{content:\s*?"([^"]+)";\s*?background-image:\s*?url\("([^"]+)"\);\s*?height:\s*?(\d+)px;\s*?width:\s*?(\d+)px;\s*?margin:([^;}]+);?([^}]*)\}/gm,i=/[^\n}]*\.badges\s+\.moderator\s*{\s*background-image:\s*url\(\s*['"]([^'"]+)['"][^}]+(?:}|$)/,s=t("./constants"),r=t("./utils"),a=function(e,t,n){t&&(n.global=!0,this.global_sets.push(e))},l=function(e,t){var n=e.split(/ +/);return 2!=n.length?e:(n[0]=parseFloat(n[0]),n[1]=parseFloat(n[1]),n[0]==(t-18)/-2&&0==n[1]?null:e)},c=function(e){var t=e.margins;return t||(t=(e.height-18)/-2+"px 0"),".ffz-emote-"+e.id+' { background-image: url("'+e.url+'"); height: '+e.height+"px; width: "+e.width+"px; margin: "+t+(e.extra_css?"; "+e.extra_css:"")+"}\n"},u=function(e){return e.margins||e.extra_css?c(e)+'img[src="'+e.url+'"] { '+(e.margins?"margin: "+e.margins+";":"")+(e.extra_css||"")+" }\n":c(e)},d=u;n.prototype.setup_emoticons=function(){this.log("Preparing emoticon system."),this.emote_sets={},this.global_sets=[],this._last_emote_id=0,this.log("Creating emoticon style element.");var e=this._emote_style=document.createElement("style");e.id="ffz-emoticon-css",document.head.appendChild(e),this.log("Loading global emote set."),this.load_set("global",a.bind(this,"global"))},n.prototype.getEmotes=function(e,t){var n=this.users[e],o=th
var r=t.toLowerCase(),a=n.capitalization[r];return a&&Date.now()-a[1]<36e5?void(i.channel=a[0]):void o.push(new RSVP.Promise(function(e,t,o,i){l.ws_send("get_display_name",t,function(s,r){var a=s?r:o;n.capitalization[t]=[a,Date.now()],e.channel=a,i()})||(e.channel=o,i()),setTimeout(function(e,t,n){e.channel||(e.channel=t),n()}.bind(this,e,o,i),5e3)}.bind(this,i,r,t)))}},a=function(){o.length?RSVP.all(o).then(e,e):e()};t=[];for(var c=0;c<i.length;c++){var u=i[c];l._twitch_set_to_channel[u]?r(u,l._twitch_set_to_channel[u]):t.push(u)}t.length>0?(l.ws_send("twitch_sets",t,function(e,n){if(t=[],e){for(var o in n)n.hasOwnProperty(o)&&(l._twitch_set_to_channel[o]=n[o],r(o,n[o]));localStorage.ffzTwitchSets=JSON.stringify(l._twitch_set_to_channel)}a()}),setTimeout(function(){t.length&&a()},5e3)):a()})]).then(function(){for(var t={},n=0;n<o[0].length;n++){var i=o[0][n];l._twitch_emote_sets[i]&&(t[i]=l._twitch_emote_sets[i])}e(t)},function(){e({})})}).then(function(o){try{if("my_emotes"!=t.getAttribute("data-page"))return;t.innerHTML="";var s=[];for(var a in o)if(o.hasOwnProperty(a)){var c=o[a];c.channel&&c.emotes&&c.emotes.length&&s.push([1,c.channel,c])}s.sort(function(e,t){if(e[0]<t[0])return-1;if(e[0]>t[0])return 1;var n=e[1].toLowerCase(),o=t[1].toLowerCase();return("twitch turbo"===n||"global emoticons"===n)&&(n="zzz"+n),("twitch turbo"===o||"global emoticons"===o)&&(o="zzz"+o),o>n?-1:n>o?1:0});for(var u=0;u<s.length;u++){var c=s[u][2],d=document.createElement("div"),h=document.createElement("div");d.className="heading",d.innerHTML='<span class="right">'+c.source+"</span>"+n.get_capitalization(c.channel),c.badge&&(d.style.backgroundImage='url("'+c.badge+'")'),h.className="emoticon-grid",h.appendChild(d);for(var m=0;m<c.emotes.length;m++){var _=c.emotes[m],p=r[_.code]||_.code,f=document.createElement("span");f.className="emoticon tooltip",f.style.backgroundImage='url("'+i+_.id+'/1.0")';var g='image-set(url("'+i+_.id+'/1.0") 1x, url("'+i+_.id+'/2.0") 2x, url("'+i+_.id+'/3.0") 4x)';f.style.backgroundImage="-webkit-"+g,f.style.backgroundImage="-moz-"+g,f.style.backgroundImage="-ms-"+g,f.style.backgroundImage=g,f.title=p,f.addEventListener("click",l._add_emote.bind(l,e,p)),h.appendChild(f)}t.appendChild(h)}if(!s.length){var h=document.createElement("div");h.className="chat-menu-content center",h.innerHTML="Error Loading Subscriptions",t.appendChild(h)}}catch(v){l.log("My Emotes Menu Error",v),t.innerHTML="";var h=document.createElement("div"),d=document.createElement("div"),b=document.createElement("p");d.className="heading",d.innerHTML="Error Loading Menu",h.appendChild(d),b.className="clearfix",b.textContent=v,h.appendChild(b),h.className="chat-menu-content",t.appendChild(h)}})}}},{"../constants":3}],23:[function(){var t=e.FrankerFaceZ;t.prototype.setup_notifications=function(){this.log("Adding event handler for window focus."),e.addEventListener("focus",this.clear_notifications.bind(this))},t.settings_info.highlight_notifications={type:"boolean",value:!1,category:"Chat",visible:function(){return!this.has_bttv},name:"Highlight Notifications",help:"Display notifications when a highlighted word appears in chat in an unfocused tab.",on_update:function(e,t){if(e&&t){if("denied"===Notification.permission)return this.log("Notifications have been denied by the user."),void this.settings.set("highlight_notifications",!1);if("granted"!==Notification.permission){var n=this;Notification.requestPermission(function(e){"denied"===e&&(n.log("Notifications have been denied by the user."),n.settings.set("highlight_notifications",!1))})}}}},t.ws_commands.message=function(e){this.show_message(e)},t._notifications={},t._last_notification=0,t.prototype.clear_notifications=function(){for(var e in t._notifications){var n=t._notifications[e];if(n)try{n.close()}catch(o){}}t._notifications={},t._last_notification=0},t.prototype.show_notification=function(e,n,o,i,s,r){var a=Notification.permission;if("denied "===a)return!1;if("granted"===a){n=n||"FrankerFaceZ",i=i||1e4;var l={lang:"en-US",dir:"ltr",body:e,tag:o||"FrankerFaceZ",icon:"http://cdn.frankerfac