You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

0 lines
7.3 KiB

  1. !function(a,b,c,d){a.fn.chat=function(b,c,e){var f=a.extend(!0,{},a.fn.chat.settings,e),g=arguments||!1;return a(this).each(function(){var e,h,i,j,k,l,m=a(this),n=m.find(f.selector.expandButton),o=m.find(f.selector.userListButton),p=m.find(f.selector.userList),q=(m.find(f.selector.room),m.find(f.selector.userCount)),r=m.find(f.selector.log),s=(m.find(f.selector.message),m.find(f.selector.messageInput)),t=m.find(f.selector.messageButton),u=m.data("module"),v=f.className,w=f.namespace,x="",y={};return l={channel:!1,width:{log:r.width(),userList:p.outerWidth()},initialize:function(){return Pusher===d&&l.error(f.errors.pusher),b===d||c===d?(l.error(f.errors.key),!1):f.endpoint.message||f.endpoint.authentication?(k=new Pusher(b),Pusher.channel_auth_endpoint=f.endpoint.authentication,l.channel=k.subscribe(c),l.channel.bind("pusher:subscription_succeeded",l.user.list.create),l.channel.bind("pusher:subscription_error",l.error),l.channel.bind("pusher:member_added",l.user.joined),l.channel.bind("pusher:member_removed",l.user.left),l.channel.bind("update_messages",l.message.receive),a.each(f.customEvents,function(a,b){l.channel.bind(a,b)}),a.fn.hoverClass!==d&&a.fn.downClass!==d&&(n.hoverClass().downClass(),o.hoverClass().downClass(),t.hoverClass().downClass()),o.on("click."+w,l.event.toggleUserList),n.on("click."+w,l.event.toggleExpand),s.on("keydown."+w,l.event.input.keydown).on("keyup."+w,l.event.input.keyup),t.on("mouseenter."+w,l.event.hover).on("mouseleave."+w,l.event.hover).on("click."+w,l.event.submit),r.animate({scrollTop:r.prop("scrollHeight")},400),m.data("module",l).addClass(v.loading),void 0):(l.error(f.errors.endpoint),!1)},refresh:function(){o.removeClass(v.active),l.width={log:r.width(),userList:p.outerWidth()},o.hasClass(v.active)&&l.user.list.hide(),m.data("module",l)},user:{updateCount:function(){f.userCount&&(y=m.data("users"),i=0,a.each(y,function(){i++}),q.html(f.templates.userCount(i)))},joined:function(b){y=m.data("users"),"anonymous"!=b.id&&y[b.id]===d&&(y[b.id]=b.info,f.randomColor&&b.info.color===d&&(b.info.color=f.templates.color(b.id)),x=f.templates.userList(b.info),b.info.isAdmin?a(x).prependTo(p):a(x).appendTo(p),f.partingMessages&&(r.append(f.templates.joined(b.info)),l.message.scroll.test()),l.user.updateCount())},left:function(a){y=m.data("users"),a!==d&&"anonymous"!==a.id&&(delete y[a.id],m.data("users",y),p.find("[data-id="+a.id+"]").remove(),f.partingMessages&&(r.append(f.templates.left(a.info)),l.message.scroll.test()),l.user.updateCount())},list:{create:function(b){y={},b.each(function(a){"anonymous"!==a.id&&"undefined"!==a.id&&(f.randomColor&&a.info.color===d&&(a.info.color=f.templates.color(a.id)),x=a.info.isAdmin?f.templates.userList(a.info)+x:x+f.templates.userList(a.info),y[a.id]=a.info)}),m.data("users",y).data("user",y[b.me.id]).removeClass(v.loading),p.html(x),l.user.updateCount(),a.proxy(f.onJoin,p.children())()},show:function(){r.animate({width:l.width.log-l.width.userList},{duration:f.speed,easing:f.easing,complete:l.message.scroll.move})},hide:function(){r.stop().animate({width:l.width.log},{duration:f.speed,easing:f.easing,complete:l.message.scroll.move})}}},message:{scroll:{test:function(){j=r.prop("scrollHeight")-r.height(),Math.abs(r.scrollTop()-j)<f.scrollArea&&l.message.scroll.move()},move:function(){j=r.prop("scrollHeight")-r.height(),r.scrollTop(j)}},send:function(b){l.utils.emptyString(b)||a.api({url:f.endpoint.message,method:"POST",data:{chat_message:{content:b,timestamp:(new Date).getTime()}}})},receive:function(a){h=a.data,y=m.data("users"),e=m.data("user"),y[h.userID]!==d&&(e===d||e.id!=h.userID)&&(h.user=y[h.userID],l.message.display(h))},display:function(b){r.append(f.templates.message(b)),l.message.scroll.test(),a.proxy(f.onMessage,r.children().last())()}},expand:function(){m.addClass(v.expand),a.proxy(f.onExpand,m)(),l.refresh()},contract:function(){m.removeClass(v.expand),a.proxy(f.onContract,m)(),l.refresh()},event:{input:{keydown:function(a){13==a.which&&t.addClass(v.down)},keyup:function(a){13==a.which&&(t.removeClass(v.down),l.event.submit())}},submit:functio